<html>
<head>
	<title>Php.XPath Documentation.</title>
	<link href="Php.XPath.css.php" rel="STYLESHEET" type="text/css">
</head>
<body>

<!-- ################################################################## -->

<small>
	This page contains automatically generated documentation.
	Last updated: 
	06 October 2002 23:56:47.	<a href="#UpdateInstructions">Updating instructions</a>
</small>

<!-- ################################################################## -->

<hr>

<?xml version="1.0" encoding="UTF-8"?><table xmlns="http://www.w3.org/TR/xhtml1/strict" border="0" width="100%" cellspacing="0"><tr bgcolor="#000000"><th><font size="5" color="#ffffff" face="Arial"><small style="float:right; margin-right:10">version 3.3</small>Php.XPath documentation
				</font></th></tr></table><p xmlns="http://www.w3.org/TR/xhtml1/strict">Documentation for the <b>XPath.class.php</b> file</p><h1 xmlns="http://www.w3.org/TR/xhtml1/strict">Contents</h1><ul xmlns="http://www.w3.org/TR/xhtml1/strict"><li><a href="#Introduction">Introduction</a></li><li><a href="#CompletePublicInterface">The complete public interface</a></li><li><nobr>
		class - <a href="#XPathBase">XPathBase</a></nobr></li><li><nobr>
		class - <a href="#XPathEngine">XPathEngine</a></nobr></li><li><nobr>
		class - <a href="#XPath">XPath</a></nobr></li></ul><hr xmlns="http://www.w3.org/TR/xhtml1/strict"/><h1 xmlns="http://www.w3.org/TR/xhtml1/strict" id="Introduction">Introduction</h1><p xmlns="http://www.w3.org/TR/xhtml1/strict">Php.XPath by S.Blum / N.Swinson / D.Allen / (P.Mehl).</p><pre xmlns="http://www.w3.org/TR/xhtml1/strict">+======================================================================================================+
| A php class for searching an XML document using XPath, and making modifications using a DOM 
| style API. Does not require the DOM XML PHP library. 
|
+======================================================================================================+
| What Is XPath:
| --------------
| - "What SQL is for a relational database, XPath is for an XML document." -- Sam Blum
| - "The primary purpose of XPath is to address parts of an XML document. In support of this 
|    primary purpose, it also provides basic facilities for manipulting it." -- W3C
| 
| XPath in action and a very nice intro is under:
|    http://www.zvon.org/xxl/XPathTutorial/General/examples.html
| Specs Can be found under:
|    http://www.w3.org/TR/xpath     W3C XPath Recommendation 
|    http://www.w3.org/TR/xpath20   W3C XPath Recommendation 
|
| NOTE: Most of the XPath-spec has been realized, but not all. Usually this should not be
|       problem as the missing part is either rarely used or it's simpler to do with PHP itself.
+------------------------------------------------------------------------------------------------------+
| Requires PHP version  4.0.5 and up
+------------------------------------------------------------------------------------------------------+
| Main Active Authors:
| --------------------
| Nigel Swinson &lt;nigelswinson@users.sourceforge.net>
|   Started around 2001-07, saved phpxml from near death and renamed to Php.XPath
|   Restructured XPath code to stay in line with XPath spec.
| Sam Blum &lt;bs_php@infeer.com>
|   Started around 2001-09 1st major restruct (V2.0) and testbench initiator.   
|   2nd (V3.0) major rewrite in 2002-02
| Daniel Allen &lt;bigredlinux@yahoo.com>
|   Started around 2001-10 working to make Php.XPath adhere to specs 
| Main Former Author: Michael P. Mehl &lt;mpm@phpxml.org>
|   Inital creator of V 1.0. Stoped activities around 2001-03        
+------------------------------------------------------------------------------------------------------+
| Code Structure:
| --------------_
| The class is split into 3 main objects. To keep usability easy all 3 
| objects are in this file (but may be split in 3 file in future).
|   +-------------+ 
|   |  XPathBase  | XPathBase holds general and debugging functions. 
|   +------+------+
|          v      
|   +-------------+ XPathEngine is the implementation of the W3C XPath spec. It contains the 
|   | XPathEngine | XML-import (parser), -export  and can handle xPathQueries. It's a fully 
|   +------+------+ functional class but has no functions to modify the XML-document (see following).
|          v      
|   +-------------+ 
|   |    XPath    | XPath extends the functionality with actions to modify the XML-document.
|   +-------------+ We tryed to implement a DOM - like interface.
+------------------------------------------------------------------------------------------------------+
| Usage:
| ------
| Scroll to the end of this php file and you will find a short sample code to get you started
+------------------------------------------------------------------------------------------------------+
| Glossary:
| ---------
| To understand how to use the functions and to pass the right parameters, read following:
|     
| Document: (full node tree, XML-tree)
|     After a XML-source has been imported and parsed, it's stored as a tree of nodes sometimes 
|     refered to as 'document'.
|     
| AbsoluteXPath: (xPath, xPathSet)
|     A absolute XPath is a string. It 'points' to *one* node in the XML-document. We use the
|     term 'absolute' to emphasise that it is not an xPath-query (see xPathQuery). A valid xPath 
|     has the form like '/AAA[1]/BBB[2]/CCC[1]'. Usually functions that require a node (see Node) 
|     will also accept an abs. XPath.
|     
| Node: (node, nodeSet, node-tree)
|     Some funtions require or return a node (or a whole node-tree). Nodes are only used with the 
|     XPath-interface and have an internal structure. Every node in a XML document has a unique 
|     corresponding abs. xPath. That's why public functions that accept a node, will usually also 
|     accept a abs. xPath (a string) 'pointing' to an existing node (see absolutXPath).
|     
| XPathQuery: (xquery, query)
|     A xPath-query is a string that is matched against the XML-document. The result of the match 
|     is a xPathSet (vector of xPath's). It's always possible to pass a single absoluteXPath 
|     instead of a xPath-query. A valid xPathQuery could look like this:
|     '//XXX/*[contains(., "foo")]/..' (See the link in 'What Is XPath' to learn more).
|     
|     
+------------------------------------------------------------------------------------------------------+
| Internals:
| ----------
| - The Node Tree
|   -------------
| A central role of the package is how the XML-data is stored. The whole data is in a node-tree.
| A node can be seen as the equvalent to a tag in the XML soure with some extra info.
| For instance the following XML 
|                        &lt;AAA foo="x">***&lt;BBB/>&lt;CCC/>**&lt;BBB/>*&lt;/AAA>
| Would produce folowing node-tree:
|                              'super-root'      &lt;-- $nodeRoot (Very handy)  
|                                    |                                           
|             'depth' 0            AAA[1]        &lt;-- top node. The 'textParts' of this node would be
|                                /   |   \                     'textParts' => array('***','','**','*')
|             'depth' 1     BBB[1] CCC[1] BBB[2]               (NOTE: Is always size of child nodes+1)
| - The Node
|   --------
| The node itself is an structure desiged mainly to be used in connection with the interface of PHP.XPath.
| That means it's possible for functions to return a sub-node-tree that can be used as input of an other 
| PHP.XPath function.
| 
| The main structure of a node is:
|   $node = array(
|     'name'        => '',      # The tag name. E.g. In &lt;FOO bar="aaa"/> it would be 'FOO'
|     'attributes'  => array(), # The attributes of the tag E.g. In &lt;FOO bar="aaa"/> it would be array('bar'=>'aaa')
|     'textParts'   => array(), # Array of text parts surrounding the children E.g. &lt;FOO>aa&lt;A>bb&lt;B/>cc&lt;/A>dd&lt;/FOO> -> array('aa','bb','cc','dd')
|     'childNodes'  => array(), # Array of refences (pointers) to child nodes.
|     
| For optimisation reasions some additional data is stored in the node too:
|     'parentNode'  => NULL     # Reference (pointer) to the parent node (or NULL if it's 'super root')
|     'depth'       => 0,       # The tag depth (or tree level) starting with the root tag at 0.
|     'pos'         => 0,       # Is the zero-based position this node has in the parent's 'childNodes'-list.
|     'contextPos'  => 1,       # Is the one-based position this node has by counting the siblings tags (tags with same name)
|     'xpath'       => ''       # Is the abs. XPath to this node.
| 
| - The NodeIndex
|   -------------
| Every node in the tree has an absolute XPath. E.g '/AAA[1]/BBB[2]' the $nodeIndex is a hash array
| to all the nodes in the node-tree. The key used is the absolute XPath (a string).
|    
+------------------------------------------------------------------------------------------------------+
| License:
| --------
| The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 
| you may not use this file except in compliance with the License. You may obtain a copy of the 
| License at http://www.mozilla.org/MPL/ 
| 
| Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY
| OF ANY KIND, either express or implied. See the License for the specific language governing 
| rights and limitations under the License. 
|
| The Original Code is &lt;phpXML/>. 
| 
| The Initial Developer of the Original Code is Michael P. Mehl. Portions created by Michael 
| P. Mehl are Copyright (C) 2001 Michael P. Mehl. All Rights Reserved.
|
| Contributor(s): N.Swinson / S.Blum / D.Allen
| 
| Alternatively, the contents of this file may be used under the terms of either of the GNU 
| General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public 
| License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the 
| LGPL License are applicable instead of those above.  If you wish to allow use of your version 
| of this file only under the terms of the GPL or the LGPL License and not to allow others to 
| use your version of this file under the MPL, indicate your decision by deleting the 
| provisions above and replace them with the notice and other provisions required by the 
| GPL or the LGPL License.  If you do not delete the provisions above, a recipient may use 
| your version of this file under either the MPL, the GPL or the LGPL License. 
| 
+======================================================================================================+</pre><h1 xmlns="http://www.w3.org/TR/xhtml1/strict" id="CompletePublicInterface">The complete public interface</h1><p xmlns="http://www.w3.org/TR/xhtml1/strict">Public functions of <b>XPath</b></p><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#XPath">XPath</a> : 
				</span><span style="margin-top:0;">Constructor of the class</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reset">reset</a> : 
				</span><span style="margin-top:0;">Resets the object so it's able to take a new xml sting/file</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setModMatch">setModMatch</a> : 
				</span><span style="margin-top:0;">Resolves and xPathQuery array depending on the property['modMatch']</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#nodeName">nodeName</a> : 
				</span><span style="margin-top:0;">Retrieves the name(s) of a node or a group of document nodes.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#removeChild">removeChild</a> : 
				</span><span style="margin-top:0;">Removes a node from the XML document.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#replaceChildByData">replaceChildByData</a> : 
				</span><span style="margin-top:0;">Replace a node with any data string. The $data is taken 1:1.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#replaceChild">replaceChild</a> : 
				</span><span style="margin-top:0;">Replace the node(s) that matches the xQuery with the passed node (or passed node-tree)</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#insertChild">insertChild</a> : 
				</span><span style="margin-top:0;">Insert passed node (or passed node-tree) at the node(s) that matches the xQuery.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#appendChild">appendChild</a> : 
				</span><span style="margin-top:0;">Appends a child to anothers children.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#insertBefore">insertBefore</a> : 
				</span><span style="margin-top:0;">Inserts a node before the reference node with the same parent.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getAttributes">getAttributes</a> : 
				</span><span style="margin-top:0;">Retrieves a dedecated attribute value or a hash-array of all attributes of a node.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setAttribute">setAttribute</a> : 
				</span><span style="margin-top:0;">Set attributes of a node(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setAttributes">setAttributes</a> : 
				</span><span style="margin-top:0;">Version of setAttribute() that sets multiple attributes to node(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#removeAttribute">removeAttribute</a> : 
				</span><span style="margin-top:0;">Removes an attribute of a node(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getData">getData</a> : 
				</span><span style="margin-top:0;">Retrieve all the text from a node as a single string.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getDataParts">getDataParts</a> : 
				</span><span style="margin-top:0;">Retrieve all the text from a node as a vector of strings</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#substringData">substringData</a> : 
				</span><span style="margin-top:0;">Retrieves a sub string of a text-part OR attribute-value.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#replaceData">replaceData</a> : 
				</span><span style="margin-top:0;">Replace a sub string of a text-part OR attribute-value.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#insertData">insertData</a> : 
				</span><span style="margin-top:0;">Insert a sub string in a text-part OR attribute-value.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#appendData">appendData</a> : 
				</span><span style="margin-top:0;">Append text data to the end of the text for an attribute OR node text-part.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#deleteData">deleteData</a> : 
				</span><span style="margin-top:0;">Delete the data of a node.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#decodeEntities">decodeEntities</a> : 
				</span><span style="margin-top:0;">Decodes the character set entities in the given string.</span></nobr></li>
	</ul><p xmlns="http://www.w3.org/TR/xhtml1/strict">Public base class members inherited from <b>XPathEngine</b></p><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#XPathEngine">XPathEngine</a> : 
				</span><span style="margin-top:0;">Constructor</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reset">reset</a> : 
				</span><span style="margin-top:0;">Resets the object so it's able to take a new xml sting/file</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getProperties">getProperties</a> : 
				</span><span style="margin-top:0;">Returns the property/ies you want.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setXmlOption">setXmlOption</a> : 
				</span><span style="margin-top:0;">Set an xml_parser_set_option()</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setXmlOptions">setXmlOptions</a> : 
				</span><span style="margin-top:0;">Sets a number of xml_parser_set_option()s</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setCaseFolding">setCaseFolding</a> : 
				</span><span style="margin-top:0;">Alternative way to control whether case-folding is enabled for this XML parser.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setSkipWhiteSpaces">setSkipWhiteSpaces</a> : 
				</span><span style="margin-top:0;">Alternative way to control whether skip-white-spaces is enabled for this XML parser.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getNode">getNode</a> : 
				</span><span style="margin-top:0;">Get the node defined by the $absoluteXPath.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#wholeText">wholeText</a> : 
				</span><span style="margin-top:0;">Get a the content of a node text part or node attribute.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#exportAsHtml">exportAsHtml</a> : 
				</span><span style="margin-top:0;">Returns the containing XML as marked up HTML with specified nodes hi-lighted</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#exportAsXml">exportAsXml</a> : 
				</span><span style="margin-top:0;">Given a context this function returns the containing XML</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#exportToFile">exportToFile</a> : 
				</span><span style="margin-top:0;">Generates a XML string with the content of the current document and writes it to a file.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#importFromFile">importFromFile</a> : 
				</span><span style="margin-top:0;">Reads a file or URL and parses the XML data.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#importFromString">importFromString</a> : 
				</span><span style="margin-top:0;">Reads a string and parses the XML data.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reindexNodeTree">reindexNodeTree</a> : 
				</span><span style="margin-top:0;">Update nodeIndex and every node of the node-tree. </span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#cloneNode">cloneNode</a> : 
				</span><span style="margin-top:0;">Clone a node and it's child nodes.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#match">match</a> : 
				</span><span style="margin-top:0;">Matches (evaluates) an XPath query</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#evaluate">evaluate</a> : 
				</span><span style="margin-top:0;">Alias for the match function</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#equalNodes">equalNodes</a> : 
				</span><span style="margin-top:0;">Compare two nodes to see if they are equal (point to the same node in the doc)</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getNodePath">getNodePath</a> : 
				</span><span style="margin-top:0;">Get the absolute XPath of a node that is in a document tree.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getParentXPath">getParentXPath</a> : 
				</span><span style="margin-top:0;">Retrieves the absolute parent XPath query.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#hasChildNodes">hasChildNodes</a> : 
				</span><span style="margin-top:0;">Returns TRUE if the given node has child nodes below it</span></nobr></li>
	</ul><p xmlns="http://www.w3.org/TR/xhtml1/strict">Public base class members inherited from <b>XPathBase</b></p><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#XPathBase">XPathBase</a> : 
				</span><span style="margin-top:0;">Constructor</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reset">reset</a> : 
				</span><span style="margin-top:0;">Resets the object so it's able to take a new xml sting/file</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setVerbose">setVerbose</a> : 
				</span><span style="margin-top:0;">Alter the verbose (error) level reporting.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getLastError">getLastError</a> : 
				</span><span style="margin-top:0;">Returns the last occured error message.</span></nobr></li>
	</ul><hr xmlns="http://www.w3.org/TR/xhtml1/strict"/><h1 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathBase">Class XPathBase</h1><ul xmlns="http://www.w3.org/TR/xhtml1/strict"><li><a href="#XPathBase-PublicList">Public Methods</a></li><li><a href="#XPathBase-PrivateList">Private Methods</a></li><li><a href="#XPathBase-PublicMethods">Public Methods Detail</a></li><li><a href="#XPathBase-PrivateMethods">Private Methods Detail</a></li></ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathBase-PublicList">Public Methods</h2><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#XPathBase">XPathBase</a> : 
				</span><span style="margin-top:0;">Constructor</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reset">reset</a> : 
				</span><span style="margin-top:0;">Resets the object so it's able to take a new xml sting/file</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setVerbose">setVerbose</a> : 
				</span><span style="margin-top:0;">Alter the verbose (error) level reporting.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getLastError">getLastError</a> : 
				</span><span style="margin-top:0;">Returns the last occured error message.</span></nobr></li>
	</ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathBase-PrivateList">Private Methods</h2><p xmlns="http://www.w3.org/TR/xhtml1/strict">You really shouldn't be raking about in these functions, as you should only be
	using the public interface.  But if you need more control, then these are the
	internal functions that you can use if you want to get your hands really dirty.</p><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#_bracketsCheck">_bracketsCheck</a> : 
				</span><span style="margin-top:0;">This method checks the right amount and match of brackets</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_searchString">_searchString</a> : 
				</span><span style="margin-top:0;">Looks for a string within another string -- BUT the search-string must be located *outside* of any brackets.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_bracketExplode">_bracketExplode</a> : 
				</span><span style="margin-top:0;">Split a string by a searator-string -- BUT the separator-string must be located *outside* of any brackets.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_getEndGroups">_getEndGroups</a> : 
				</span><span style="margin-top:0;">Split a string at it's groups, ie bracketed expressions</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_prestr">_prestr</a> : 
				</span><span style="margin-top:0;">Retrieves a substring before a delimiter.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_afterstr">_afterstr</a> : 
				</span><span style="margin-top:0;">Retrieves a substring after a delimiter.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_setLastError">_setLastError</a> : 
				</span><span style="margin-top:0;">Creates a textual error message and sets it. </span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_displayError">_displayError</a> : 
				</span><span style="margin-top:0;">Displays an error message.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_displayMessage">_displayMessage</a> : 
				</span><span style="margin-top:0;">Displays a diagnostic message</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_beginDebugFunction">_beginDebugFunction</a> : 
				</span><span style="margin-top:0;">Called to begin the debug run of a function.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_closeDebugFunction">_closeDebugFunction</a> : 
				</span><span style="margin-top:0;">Called to end the debug run of a function.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_profileFunction">_profileFunction</a> : 
				</span><span style="margin-top:0;">Call to return time since start of function for Profiling</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_printContext">_printContext</a> : 
				</span><span style="margin-top:0;">Echo an XPath context for diagnostic purposes</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_treeDump">_treeDump</a> : 
				</span><span style="margin-top:0;">This is a debug helper function. It dumps the node-tree as HTML</span></nobr></li>
	</ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathBase-PublicMethods">Public Method Detail</h2><blockquote xmlns="http://www.w3.org/TR/xhtml1/strict" class="methods"><h3 id="XPathBase">
	 Method Details: XPathBase</h3><hr/><br/><span class="content"><p class="prototype">function XPathBase()</p><p class="description">Constructor</p><pre class="description"></pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 180</p></span><h3 id="reset">
	 Method Details: reset</h3><hr/><br/><span class="content"><p class="prototype">function reset()</p><p class="description">Resets the object so it's able to take a new xml sting/file</p><pre class="description">Constructing objects is slow.  If you can, reuse ones that you have used already
by using this reset() function.</pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 211</p></span><h3 id="setVerbose">
	 Method Details: setVerbose</h3><hr/><br/><span class="content"><p class="prototype">function setVerbose($levelOfVerbosity = 1)</p><p class="description">Alter the verbose (error) level reporting.</p><pre class="description">Pass an int. >0 to turn on, 0 to turn off.  The higher the number, the 
higher the level of verbosity. By default, the class has a verbose level 
of 1.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$levelOfVerbosity</b></dt><dd class="parameter"><p class="description">default is 1 = on</p></dd>
			</dl><p class="label" style="float:left">Line:</p><p class="description">Defined on line 515</p></span><h3 id="getLastError">
	 Method Details: getLastError</h3><hr/><br/><span class="content"><p class="prototype">function getLastError()</p><p class="description">Returns the last occured error message.</p><pre class="description"></pre><p class="label">Return Value:</p><span class="parameter" style="float:left"><i></i></span><span class="parameter"><p class="description">string (may be empty if there was no error at all)</p></span><p class="label">Similar Functions:</p><p class="description">_setLastError(), _lastError</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 534</p></span></blockquote><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathBase-PrivateMethods">Private Method Detail</h2><blockquote xmlns="http://www.w3.org/TR/xhtml1/strict" class="methods"><h3 id="_bracketsCheck">
	 Method Details: _bracketsCheck</h3><hr/><br/><span class="content"><p class="prototype">function _bracketsCheck($term)</p><p class="description">This method checks the right amount and match of brackets</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$term</b></dt><dd class="parameter"><p class="description">String in which is checked.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE: OK / FALSE: KO  </p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 225</p></span><h3 id="_searchString">
	 Method Details: _searchString</h3><hr/><br/><span class="content"><p class="prototype">function _searchString($term, $expression)</p><p class="description">Looks for a string within another string -- BUT the search-string must be located *outside* of any brackets.</p><pre class="description">This method looks for a string within another string. Brackets in the
string the method is looking through will be respected, which means that
only if the string the method is looking for is located outside of
brackets, the search will be successful.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$term</b></dt><dd class="parameter"><p class="description">String in which the search shall take place.</p></dd>
			<dt class="parameter"><i>string</i> <b>$expression</b></dt><dd class="parameter"><p class="description">String that should be searched.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>int</i></span><span class="parameter"><p class="description">This method returns -1 if no string was found,  otherwise the offset at which the string was found.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 282</p></span><h3 id="_bracketExplode">
	 Method Details: _bracketExplode</h3><hr/><br/><span class="content"><p class="prototype">function _bracketExplode($separator, $term)</p><p class="description">Split a string by a searator-string -- BUT the separator-string must be located *outside* of any brackets.</p><pre class="description">Returns an array of strings, each of which is a substring of string formed 
by splitting it on boundaries formed by the string separator. </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$separator</b></dt><dd class="parameter"><p class="description">String that should be searched.</p></dd>
			<dt class="parameter"><i>string</i> <b>$term</b></dt><dd class="parameter"><p class="description">String in which the search shall take place.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">see above</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 314</p></span><h3 id="_getEndGroups">
	 Method Details: _getEndGroups</h3><hr/><br/><span class="content"><p class="prototype">function _getEndGroups($string, $open='[', $close=']')</p><p class="description">Split a string at it's groups, ie bracketed expressions</p><pre class="description">Returns an array of strings, when concatenated together would produce the original
string.  ie a(b)cde(f)(g) would map to:
array ('a', '(b)', cde', '(f)', '(g)')</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$string</b></dt><dd class="parameter"><p class="description">The string to process</p></dd>
			<dt class="parameter"><i>string</i> <b>$open</b></dt><dd class="parameter"><p class="description">The substring for the open of a group</p></dd>
			<dt class="parameter"><i>string</i> <b>$close</b></dt><dd class="parameter"><p class="description">The substring for the close of a group</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">The parsed string, see above</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 392</p></span><h3 id="_prestr">
	 Method Details: _prestr</h3><hr/><br/><span class="content"><p class="prototype">function _prestr(&amp;$string, $delimiter, $offset=0)</p><p class="description">Retrieves a substring before a delimiter.</p><pre class="description">This method retrieves everything from a string before a given delimiter,
not including the delimiter.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$string</b></dt><dd class="parameter"><p class="description">String, from which the substring should be extracted.</p></dd>
			<dt class="parameter"><i>string</i> <b>$delimiter</b></dt><dd class="parameter"><p class="description">String containing the delimiter to use.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">Substring from the original string before the delimiter.</p></span><p class="label">Similar Functions:</p><p class="description">_afterstr()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 478</p></span><h3 id="_afterstr">
	 Method Details: _afterstr</h3><hr/><br/><span class="content"><p class="prototype">function _afterstr($string, $delimiter, $offset=0)</p><p class="description">Retrieves a substring after a delimiter.</p><pre class="description">This method retrieves everything from a string after a given delimiter,
not including the delimiter.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$string</b></dt><dd class="parameter"><p class="description">String, from which the substring should be extracted.</p></dd>
			<dt class="parameter"><i>string</i> <b>$delimiter</b></dt><dd class="parameter"><p class="description">String containing the delimiter to use.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">Substring from the original string after the delimiter.</p></span><p class="label">Similar Functions:</p><p class="description">_prestr()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 496</p></span><h3 id="_setLastError">
	 Method Details: _setLastError</h3><hr/><br/><span class="content"><p class="prototype">function _setLastError($message='', $line='-', $file='-')</p><p class="description">Creates a textual error message and sets it. </p><pre class="description">example: 'XPath error in THIS_FILE_NAME:LINE. Message: YOUR_MESSAGE';

I don't think the message should include any markup because not everyone wants to debug 
into the browser window.

You should call _displayError() rather than _setLastError() if you would like the message,
dependant on their verbose settings, echoed to the screen.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$message</b></dt><dd class="parameter"><p class="description">a textual error message default is ''</p></dd>
			<dt class="parameter"><i>int</i> <b>$line</b></dt><dd class="parameter"><p class="description">the line number where the error occured, use __LINE__</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">getLastError()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 553</p></span><h3 id="_displayError">
	 Method Details: _displayError</h3><hr/><br/><span class="content"><p class="prototype">function _displayError($message, $lineNumber='-', $file='-', $terminate=TRUE)</p><p class="description">Displays an error message.</p><pre class="description">This method displays an error messages depending on the users verbose settings 
and sets the last error message.  

If also possibly stops the execution of the script.
### Terminate should not be allowed --fab.  Should it??  N.S.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$message</b></dt><dd class="parameter"><p class="description">Error message to be displayed.</p></dd>
			<dt class="parameter"><i>int</i> <b>$lineNumber</b></dt><dd class="parameter"><p class="description">line number given by __LINE__</p></dd>
			<dt class="parameter"><i>bool</i> <b>$terminate</b></dt><dd class="parameter"><p class="description">(default TURE) End the execution of this script.</p></dd>
			</dl><p class="label" style="float:left">Line:</p><p class="description">Defined on line 570</p></span><h3 id="_displayMessage">
	 Method Details: _displayMessage</h3><hr/><br/><span class="content"><p class="prototype">function _displayMessage($message, $lineNumber='-', $file='-')</p><p class="description">Displays a diagnostic message</p><pre class="description">This method displays an error messages</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$message</b></dt><dd class="parameter"><p class="description">Error message to be displayed.</p></dd>
			<dt class="parameter"><i>int</i> <b>$lineNumber</b></dt><dd class="parameter"><p class="description">line number given by __LINE__</p></dd>
			</dl><p class="label" style="float:left">Line:</p><p class="description">Defined on line 587</p></span><h3 id="_beginDebugFunction">
	 Method Details: _beginDebugFunction</h3><hr/><br/><span class="content"><p class="prototype">function _beginDebugFunction($functionName)</p><p class="description">Called to begin the debug run of a function.</p><pre class="description">This method starts a &lt;DIV>&lt;PRE> tag so that the entry to this function
is clear to the debugging user.  Call _closeDebugFunction() at the
end of the function to create a clean box round the function call.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$functionName</b></dt><dd class="parameter"><p class="description">the name of the function we are beginning to debug</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">the output from the microtime() function.</p></span><p class="label">Author:</p><p class="description">Sam   Blum    &lt;bs_php@infeer.com></p><p class="label">Similar Functions:</p><p class="description">_closeDebugFunction()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 606</p></span><h3 id="_closeDebugFunction">
	 Method Details: _closeDebugFunction</h3><hr/><br/><span class="content"><p class="prototype">function _closeDebugFunction($aStartTime, $returnValue = "")</p><p class="description">Called to end the debug run of a function.</p><pre class="description">This method ends a &lt;DIV>&lt;PRE> block and reports the time since $aStartTime
is clear to the debugging user.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$aStartTime</b></dt><dd class="parameter"><p class="description">the time that the function call was started.</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$return_value</b></dt><dd class="parameter"><p class="description">the return value from the function call that 
                                  we are debugging</p></dd>
			</dl><p class="label">Author:</p><p class="description">Nigel Swinson &lt;nigelswinson@users.sourceforge.net></p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 632</p></span><h3 id="_profileFunction">
	 Method Details: _profileFunction</h3><hr/><br/><span class="content"><p class="prototype">function _profileFunction($aStartTime, $alertString)</p><p class="description">Call to return time since start of function for Profiling</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$aStartTime</b></dt><dd class="parameter"><p class="description">the time that the function call was started.</p></dd>
			<dt class="parameter"><i>string</i> <b>$alertString</b></dt><dd class="parameter"><p class="description">the string to describe what has just finished happening</p></dd>
			</dl><p class="label" style="float:left">Line:</p><p class="description">Defined on line 657</p></span><h3 id="_printContext">
	 Method Details: _printContext</h3><hr/><br/><span class="content"><p class="prototype">function _printContext($context)</p><p class="description">Echo an XPath context for diagnostic purposes</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">An XPath context</p></dd>
			</dl><p class="label" style="float:left">Line:</p><p class="description">Defined on line 670</p></span><h3 id="_treeDump">
	 Method Details: _treeDump</h3><hr/><br/><span class="content"><p class="prototype">function _treeDump($node, $indent = '')</p><p class="description">This is a debug helper function. It dumps the node-tree as HTML</p><pre class="description">*QUICK AND DIRTY*. Needs some polishing.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$node</b></dt><dd class="parameter"><p class="description">A node </p></dd>
			<dt class="parameter"><i>string</i> <b>$indent</b></dt><dd class="parameter"><p class="description">(optional, default=''). For internal recursive calls.</p></dd>
			</dl><p class="label" style="float:left">Line:</p><p class="description">Defined on line 682</p></span></blockquote><h1 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathEngine">Class XPathEngine</h1><p xmlns="http://www.w3.org/TR/xhtml1/strict">The <b>XPathEngine</b> class extends the 
		<a href="#XPathBase">XPathBase</a>
		class.</p><ul xmlns="http://www.w3.org/TR/xhtml1/strict"><li><a href="#XPathEngine-PublicList">Public Methods</a></li><li><a href="#XPathEngine-PrivateList">Private Methods</a></li><li><a href="#XPathEngine-PublicMethods">Public Methods Detail</a></li><li><a href="#XPathEngine-PrivateMethods">Private Methods Detail</a></li></ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathEngine-PublicList">Public Methods</h2><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#XPathEngine">XPathEngine</a> : 
				</span><span style="margin-top:0;">Constructor</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reset">reset</a> : 
				</span><span style="margin-top:0;">Resets the object so it's able to take a new xml sting/file</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getProperties">getProperties</a> : 
				</span><span style="margin-top:0;">Returns the property/ies you want.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setXmlOption">setXmlOption</a> : 
				</span><span style="margin-top:0;">Set an xml_parser_set_option()</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setXmlOptions">setXmlOptions</a> : 
				</span><span style="margin-top:0;">Sets a number of xml_parser_set_option()s</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setCaseFolding">setCaseFolding</a> : 
				</span><span style="margin-top:0;">Alternative way to control whether case-folding is enabled for this XML parser.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setSkipWhiteSpaces">setSkipWhiteSpaces</a> : 
				</span><span style="margin-top:0;">Alternative way to control whether skip-white-spaces is enabled for this XML parser.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getNode">getNode</a> : 
				</span><span style="margin-top:0;">Get the node defined by the $absoluteXPath.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#wholeText">wholeText</a> : 
				</span><span style="margin-top:0;">Get a the content of a node text part or node attribute.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#exportAsHtml">exportAsHtml</a> : 
				</span><span style="margin-top:0;">Returns the containing XML as marked up HTML with specified nodes hi-lighted</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#exportAsXml">exportAsXml</a> : 
				</span><span style="margin-top:0;">Given a context this function returns the containing XML</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#exportToFile">exportToFile</a> : 
				</span><span style="margin-top:0;">Generates a XML string with the content of the current document and writes it to a file.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#importFromFile">importFromFile</a> : 
				</span><span style="margin-top:0;">Reads a file or URL and parses the XML data.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#importFromString">importFromString</a> : 
				</span><span style="margin-top:0;">Reads a string and parses the XML data.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reindexNodeTree">reindexNodeTree</a> : 
				</span><span style="margin-top:0;">Update nodeIndex and every node of the node-tree. </span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#cloneNode">cloneNode</a> : 
				</span><span style="margin-top:0;">Clone a node and it's child nodes.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#match">match</a> : 
				</span><span style="margin-top:0;">Matches (evaluates) an XPath query</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#evaluate">evaluate</a> : 
				</span><span style="margin-top:0;">Alias for the match function</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#equalNodes">equalNodes</a> : 
				</span><span style="margin-top:0;">Compare two nodes to see if they are equal (point to the same node in the doc)</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getNodePath">getNodePath</a> : 
				</span><span style="margin-top:0;">Get the absolute XPath of a node that is in a document tree.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getParentXPath">getParentXPath</a> : 
				</span><span style="margin-top:0;">Retrieves the absolute parent XPath query.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#hasChildNodes">hasChildNodes</a> : 
				</span><span style="margin-top:0;">Returns TRUE if the given node has child nodes below it</span></nobr></li>
	</ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathEngine-PrivateList">Private Methods</h2><p xmlns="http://www.w3.org/TR/xhtml1/strict">You really shouldn't be raking about in these functions, as you should only be
	using the public interface.  But if you need more control, then these are the
	internal functions that you can use if you want to get your hands really dirty.</p><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#_export">_export</a> : 
				</span><span style="margin-top:0;">Generates a XML string with the content of the current document.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_InternalExport">_InternalExport</a> : 
				</span><span style="margin-top:0;">Export the xml document starting at the named node.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleStartElement">_handleStartElement</a> : 
				</span><span style="margin-top:0;">Handles opening XML tags while parsing.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleEndElement">_handleEndElement</a> : 
				</span><span style="margin-top:0;">Handles closing XML tags while parsing.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleCharacterData">_handleCharacterData</a> : 
				</span><span style="margin-top:0;">Handles character data while parsing.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleDefaultData">_handleDefaultData</a> : 
				</span><span style="margin-top:0;">Default handler for the XML parser.  </span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handlePI">_handlePI</a> : 
				</span><span style="margin-top:0;">Handles processing instruction (PI)</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_createSuperRoot">_createSuperRoot</a> : 
				</span><span style="margin-top:0;">Creates a super root node.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_internalAppendChild">_internalAppendChild</a> : 
				</span><span style="margin-top:0;">Adds a new node to the XML document tree during xml parsing.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_recursiveReindexNodeTree">_recursiveReindexNodeTree</a> : 
				</span><span style="margin-top:0;">Here's where the work is done for reindexing (see reindexNodeTree)</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#__sleep">__sleep</a> : 
				</span><span style="margin-top:0;">PHP cals this function when you call PHP's serialize. </span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#__wakeup">__wakeup</a> : 
				</span><span style="margin-top:0;">PHP cals this function when you call PHP's unserialize. </span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_removeLiterals">_removeLiterals</a> : 
				</span><span style="margin-top:0;">Parse out the literals of an XPath expression.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_asLiteral">_asLiteral</a> : 
				</span><span style="margin-top:0;">Returns the given string as a literal reference.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_addLiteral">_addLiteral</a> : 
				</span><span style="margin-top:0;">Adds a literal to our array of literals</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_evaluateExpr">_evaluateExpr</a> : 
				</span><span style="margin-top:0;">Internal recursive evaluate an-XPath-expression function.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_evaluatePathExpr">_evaluatePathExpr</a> : 
				</span><span style="margin-top:0;">Internal recursive evaluate an Path expression.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_sortByDocOrder">_sortByDocOrder</a> : 
				</span><span style="margin-top:0;">Sort an xPathSet by doc order.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_evaluateStep">_evaluateStep</a> : 
				</span><span style="margin-top:0;">Evaluate a step from a XPathQuery expression at a specific contextPath.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_checkPredicates">_checkPredicates</a> : 
				</span><span style="margin-top:0;">Checks whether a node matches predicates.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_evaluateFunction">_evaluateFunction</a> : 
				</span><span style="margin-top:0;">Evaluates an XPath function</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_checkNodeTest">_checkNodeTest</a> : 
				</span><span style="margin-top:0;">Checks whether a node matches a node-test.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_getAxis">_getAxis</a> : 
				</span><span style="margin-top:0;">Retrieves axis information from an XPath query step.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_child">_handleAxis_child</a> : 
				</span><span style="margin-top:0;">Handles the XPath child axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_parent">_handleAxis_parent</a> : 
				</span><span style="margin-top:0;">Handles the XPath parent axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_attribute">_handleAxis_attribute</a> : 
				</span><span style="margin-top:0;">Handles the XPath attribute axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_self">_handleAxis_self</a> : 
				</span><span style="margin-top:0;">Handles the XPath self axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_descendant">_handleAxis_descendant</a> : 
				</span><span style="margin-top:0;">Handles the XPath descendant axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_ancestor">_handleAxis_ancestor</a> : 
				</span><span style="margin-top:0;">Handles the XPath ancestor axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_namespace">_handleAxis_namespace</a> : 
				</span><span style="margin-top:0;">Handles the XPath namespace axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_following">_handleAxis_following</a> : 
				</span><span style="margin-top:0;">Handles the XPath following axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_preceding">_handleAxis_preceding</a> : 
				</span><span style="margin-top:0;">Handles the XPath preceding axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_following_sibling">_handleAxis_following_sibling</a> : 
				</span><span style="margin-top:0;">Handles the XPath following-sibling axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_preceding_sibling">_handleAxis_preceding_sibling</a> : 
				</span><span style="margin-top:0;">Handles the XPath preceding-sibling axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_descendant_or_self">_handleAxis_descendant_or_self</a> : 
				</span><span style="margin-top:0;">Handles the XPath descendant-or-self axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleAxis_ancestor_or_self">_handleAxis_ancestor_or_self</a> : 
				</span><span style="margin-top:0;">Handles the XPath ancestor-or-self axis.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_last">_handleFunction_last</a> : 
				</span><span style="margin-top:0;">Handles the XPath function last.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_position">_handleFunction_position</a> : 
				</span><span style="margin-top:0;">Handles the XPath function position.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_count">_handleFunction_count</a> : 
				</span><span style="margin-top:0;">Handles the XPath function count.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_id">_handleFunction_id</a> : 
				</span><span style="margin-top:0;">Handles the XPath function id.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_name">_handleFunction_name</a> : 
				</span><span style="margin-top:0;">Handles the XPath function name.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_string">_handleFunction_string</a> : 
				</span><span style="margin-top:0;">Handles the XPath function string.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_concat">_handleFunction_concat</a> : 
				</span><span style="margin-top:0;">Handles the XPath function concat.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_starts_with">_handleFunction_starts_with</a> : 
				</span><span style="margin-top:0;">Handles the XPath function starts-with.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_contains">_handleFunction_contains</a> : 
				</span><span style="margin-top:0;">Handles the XPath function contains.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_substring_before">_handleFunction_substring_before</a> : 
				</span><span style="margin-top:0;">Handles the XPath function substring-before.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_substring_after">_handleFunction_substring_after</a> : 
				</span><span style="margin-top:0;">Handles the XPath function substring-after.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_substring">_handleFunction_substring</a> : 
				</span><span style="margin-top:0;">Handles the XPath function substring.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_string_length">_handleFunction_string_length</a> : 
				</span><span style="margin-top:0;">Handles the XPath function string-length.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_normalize_space">_handleFunction_normalize_space</a> : 
				</span><span style="margin-top:0;">Handles the XPath function normalize-space.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_translate">_handleFunction_translate</a> : 
				</span><span style="margin-top:0;">Handles the XPath function translate.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_boolean">_handleFunction_boolean</a> : 
				</span><span style="margin-top:0;">Handles the XPath function boolean.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_not">_handleFunction_not</a> : 
				</span><span style="margin-top:0;">Handles the XPath function not.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_true">_handleFunction_true</a> : 
				</span><span style="margin-top:0;">Handles the XPath function TRUE.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_false">_handleFunction_false</a> : 
				</span><span style="margin-top:0;">Handles the XPath function FALSE.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_lang">_handleFunction_lang</a> : 
				</span><span style="margin-top:0;">Handles the XPath function lang.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_number">_handleFunction_number</a> : 
				</span><span style="margin-top:0;">Handles the XPath function number.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_sum">_handleFunction_sum</a> : 
				</span><span style="margin-top:0;">Handles the XPath function sum.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_floor">_handleFunction_floor</a> : 
				</span><span style="margin-top:0;">Handles the XPath function floor.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_ceiling">_handleFunction_ceiling</a> : 
				</span><span style="margin-top:0;">Handles the XPath function ceiling.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_handleFunction_round">_handleFunction_round</a> : 
				</span><span style="margin-top:0;">Handles the XPath function round.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_translateAmpersand">_translateAmpersand</a> : 
				</span><span style="margin-top:0;">Translate all ampersands to it's literal entities '&amp;amp;' and back.</span></nobr></li>
	</ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathEngine-PublicMethods">Public Method Detail</h2><blockquote xmlns="http://www.w3.org/TR/xhtml1/strict" class="methods"><h3 id="XPathEngine">
	 Method Details: XPathEngine</h3><hr/><br/><span class="content"><p class="prototype">function XPathEngine($userXmlOptions=array())</p><p class="description">Constructor</p><pre class="description">Optionally you may call this constructor with the XML-filename to parse and the 
XML option vector. Each of the entries in the option vector will be passed to
xml_parser_set_option().

A option vector sample: 
  $xmlOpt = array(XML_OPTION_CASE_FOLDING => FALSE, 
                  XML_OPTION_SKIP_WHITE => TRUE);</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$userXmlOptions</b></dt><dd class="parameter"><p class="description">(optional) Vector of (&lt;optionID>=>&lt;value>, 
                                 &lt;optionID>=>&lt;value>, ...).  See PHP's
                                 xml_parser_set_option() docu for a list of possible
                                 options.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">importFromFile(), importFromString(), setXmlOptions()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 817</p></span><h3 id="reset">
	 Method Details: reset</h3><hr/><br/><span class="content"><p class="prototype">function reset()</p><p class="description">Resets the object so it's able to take a new xml sting/file</p><pre class="description">Constructing objects is slow.  If you can, reuse ones that you have used already
by using this reset() function.</pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 837</p></span><h3 id="getProperties">
	 Method Details: getProperties</h3><hr/><br/><span class="content"><p class="prototype">function getProperties($param=NULL)</p><p class="description">Returns the property/ies you want.</p><pre class="description">if $param is not given, all properties will be returned in a hash.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$param</b></dt><dd class="parameter"><p class="description">the property you want the value of, or NULL for all the properties</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">string OR hash of all params, or NULL on an unknown parameter.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 862</p></span><h3 id="setXmlOption">
	 Method Details: setXmlOption</h3><hr/><br/><span class="content"><p class="prototype">function setXmlOption($optionID, $value)</p><p class="description">Set an xml_parser_set_option()</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$optionID</b></dt><dd class="parameter"><p class="description">The option ID (e.g. XML_OPTION_SKIP_WHITE)</p></dd>
			<dt class="parameter"><i>int</i> <b>$value</b></dt><dd class="parameter"><p class="description">The option value.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">XML parser functions in PHP doc</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 883</p></span><h3 id="setXmlOptions">
	 Method Details: setXmlOptions</h3><hr/><br/><span class="content"><p class="prototype">function setXmlOptions($userXmlOptions=array())</p><p class="description">Sets a number of xml_parser_set_option()s</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$userXmlOptions</b></dt><dd class="parameter"><p class="description">An array of parser options.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">setXmlOption</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 894</p></span><h3 id="setCaseFolding">
	 Method Details: setCaseFolding</h3><hr/><br/><span class="content"><p class="prototype">function setCaseFolding($onOff=TRUE)</p><p class="description">Alternative way to control whether case-folding is enabled for this XML parser.</p><pre class="description">Short cut to setXmlOptions(XML_OPTION_CASE_FOLDING, TRUE/FALSE)

When it comes to XML, case-folding simply means uppercasing all tag- 
and attribute-names (NOT the content) if set to TRUE.  Note if you
have this option set, then your XPath queries will also be case folded 
for you.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>bool</i> <b>$onOff</b></dt><dd class="parameter"><p class="description">(default TRUE) </p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">XML parser functions in PHP doc</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 914</p></span><h3 id="setSkipWhiteSpaces">
	 Method Details: setSkipWhiteSpaces</h3><hr/><br/><span class="content"><p class="prototype">function setSkipWhiteSpaces($onOff=TRUE)</p><p class="description">Alternative way to control whether skip-white-spaces is enabled for this XML parser.</p><pre class="description">Short cut to setXmlOptions(XML_OPTION_SKIP_WHITE, TRUE/FALSE)

When it comes to XML, skip-white-spaces will trim the tag content.
An XML file with no whitespace will be faster to process, but will make 
your data less human readable when you come to write it out.

Running with this option on will slow the class down, so if you want to 
speed up your XML, then run it through once skipping white-spaces, then
write out the new version of your XML without whitespace, then use the
new XML file with skip whitespaces turned off.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>bool</i> <b>$onOff</b></dt><dd class="parameter"><p class="description">(default TRUE) </p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">XML parser functions in PHP doc</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 935</p></span><h3 id="getNode">
	 Method Details: getNode</h3><hr/><br/><span class="content"><p class="prototype">function &amp;getNode($absoluteXPath='')</p><p class="description">Get the node defined by the $absoluteXPath.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">(optional, default is 'super-root') xpath to the node.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">The node, or FALSE if the node wasn't found.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 945</p></span><h3 id="wholeText">
	 Method Details: wholeText</h3><hr/><br/><span class="content"><p class="prototype">function &amp;wholeText($absoluteXPath, $textPartNr=NULL)</p><p class="description">Get a the content of a node text part or node attribute.</p><pre class="description">If the absolute Xpath references an attribute (Xpath ends with @ or attribute::), 
then the text value of that node-attribute is returned.
Otherwise the Xpath is referencing a text part of the node. This can be either a 
direct reference to a text part (Xpath ends with text()[&lt;nr>]) or indirect reference 
(a simple abs. Xpath to a node).
1) Direct Reference (xpath ends with text()[&lt;part-number>]):
  If the 'part-number' is omitted, the first text-part is assumed; starting by 1.
  Negative numbers are allowed, where -1 is the last text-part a.s.o.
2) Indirect Reference (a simple abs. Xpath to a node):
  Default is to return the *whole text*; that is the concated text-parts of the matching
  node. (NOTE that only in this case you'll only get a copy and changes to the returned  
  value wounld have no effect). Optionally you may pass a parameter 
  $textPartNr to define the text-part you want;  starting by 1.
  Negative numbers are allowed, where -1 is the last text-part a.s.o.

NOTE I : The returned value can be fetched by reference
         E.g. $text =&amp; wholeText(). If you wish to modify the text.
NOTE II: text-part numbers out of range will return FALSE
SIDENOTE:The function name is a suggestion from W3C in the XPath specification level 3.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">xpath to the node (See above).</p></dd>
			<dt class="parameter"><i>int</i> <b>$textPartNr</b></dt><dd class="parameter"><p class="description">If referring to a node, specifies which text part 
                                    to query.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>&amp;string</i></span><span class="parameter"><p class="description">A *reference* to the text if the node that the other  parameters describe or FALSE if the node is not found.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 980</p></span><h3 id="exportAsHtml">
	 Method Details: exportAsHtml</h3><hr/><br/><span class="content"><p class="prototype">function exportAsHtml($absoluteXPath='', $hilightXpathList=array())</p><p class="description">Returns the containing XML as marked up HTML with specified nodes hi-lighted</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">The address of the node you would like to export.
                                   If empty the whole document will be exported.</p></dd>
			<dt class="parameter"><i>array</i> <b>$hilighXpathList</b></dt><dd class="parameter"><p class="description">A list of nodes that you would like to highlight</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The Xml document marked up as HTML so that it can be viewed in a browser, including any XML headers. FALSE on error.</p></span><p class="label">Similar Functions:</p><p class="description">_export()    </p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1071</p></span><h3 id="exportAsXml">
	 Method Details: exportAsXml</h3><hr/><br/><span class="content"><p class="prototype">function exportAsXml($absoluteXPath='', $xmlHeader=NULL)</p><p class="description">Given a context this function returns the containing XML</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">The address of the node you would like to export.
                                 If empty the whole document will be exported.</p></dd>
			<dt class="parameter"><i>array</i> <b>$xmlHeader</b></dt><dd class="parameter"><p class="description">The string that you would like to appear before
                                 the XML content.  ie before the &lt;root>&lt;/root>.  If you
                                 do not specify this argument, the xmlHeader that was 
                                 found in the parsed xml file will be used instead.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The Xml fragment/document, suitable for writing out to an .xml file or as part of a larger xml file, or FALSE on error.</p></span><p class="label">Similar Functions:</p><p class="description">_export()    </p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1091</p></span><h3 id="exportToFile">
	 Method Details: exportToFile</h3><hr/><br/><span class="content"><p class="prototype">function exportToFile($fileName, $absoluteXPath='', $xmlHeader=NULL)</p><p class="description">Generates a XML string with the content of the current document and writes it to a file.</p><pre class="description">Per default includes a &lt;?xml ...> tag at the start of the data too. </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">The path to the parent node you want(see text above)</p></dd>
			<dt class="parameter"><i>array</i> <b>$xmlHeader</b></dt><dd class="parameter"><p class="description">The string that you would like to appear before
                                     the XML content.  ie before the &lt;root>&lt;/root>.  If you
                                     do not specify this argument, the xmlHeader that was 
                                     found in the parsed xml file will be used instead.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">The returned string contains well-formed XML data  or FALSE on error.</p></span><p class="label">Similar Functions:</p><p class="description">exportAsXml(), exportAsHtml()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1111</p></span><h3 id="importFromFile">
	 Method Details: importFromFile</h3><hr/><br/><span class="content"><p class="prototype">function importFromFile($fileName)</p><p class="description">Reads a file or URL and parses the XML data.</p><pre class="description">Parse the XML source and (upon success) store the information into an internal structure.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$fileName</b></dt><dd class="parameter"><p class="description">Path and name (or URL) of the file to be read and parsed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE on failure (check getLastError())</p></span><p class="label">Similar Functions:</p><p class="description">importFromString(), getLastError(), </p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1499</p></span><h3 id="importFromString">
	 Method Details: importFromString</h3><hr/><br/><span class="content"><p class="prototype">function importFromString($xmlString, $absoluteParentPath = '')</p><p class="description">Reads a string and parses the XML data.</p><pre class="description">Parse the XML source and (upon success) store the information into an internal structure.
If a parent xpath is given this means that XML data is to be *appended* to that parent.

### If a function uses setLastError(), then say in the function header that getLastError() is useful.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xmlString</b></dt><dd class="parameter"><p class="description">Name of the string to be read and parsed.</p></dd>
			<dt class="parameter"><i>string</i> <b>$absoluteParentPath</b></dt><dd class="parameter"><p class="description">Node to append data too (see above)</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE on failure  (check getLastError())</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1564</p></span><h3 id="reindexNodeTree">
	 Method Details: reindexNodeTree</h3><hr/><br/><span class="content"><p class="prototype">function reindexNodeTree()</p><p class="description">Update nodeIndex and every node of the node-tree. </p><pre class="description">Call after you have finished any tree modifications other wise a match with 
an xPathQuery will produce wrong results.  The $this->nodeIndex[] is recreated 
and every nodes optimization data is updated.  The optimization data is all the
data that is duplicate information, would just take longer to find. Child nodes 
with value NULL are removed from the tree.

By default the modification functions in this component will automatically re-index
the nodes in the tree.  Sometimes this is not the behaver you want. To surpress the 
reindex, set the functions $autoReindex to FALSE and call reindexNodeTree() at the 
end of your changes.  This sometimes leads to better code (and less CPU overhead).

Sample:
=======
Given the xml is &lt;AAA>&lt;B/>.&lt;B/>.&lt;B/>&lt;/AAA> | Goal is &lt;AAA>.&lt;B/>.&lt;/AAA>  (Delete B[1] and B[3])
  $xPathSet = $xPath->match('//B'); # Will result in array('/AAA[1]/B[1]', '/AAA[1]/B[2]', '/AAA[1]/B[3]');
Three ways to do it.
1) Top-Down  (with auto reindexing) - Safe, Slow and you get easily mix up with the the changing node index
   removeChild('/AAA[1]/B[1]'); // B[1] removed, thus all B[n] become B[n-1] !!
   removeChild('/AAA[1]/B[2]'); // Now remove B[2] (That originaly was B[3])
2) Bottom-Up (with auto reindexing) -  Safe, Slow and the changing node index (caused by auto-reindex) can be ignored.
   for ($i=sizeOf($xPathSet)-1; $i>=0; $i--) {
     if ($i==1) continue; 
     removeChild($xPathSet[$i]);
   }
3) // Top-down (with *NO* auto reindexing) - Fast, Safe as long as you call reindexNodeTree()
   foreach($xPathSet as $xPath) {
     // Specify no reindexing
     if ($xPath == $xPathSet[1]) continue; 
     removeChild($xPath, $autoReindex=FALSE);
     // The object is now in a slightly inconsistent state.
   }
   // Finally do the reindex and the object is consistent again
   reindexNodeTree();</pre><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE otherwise.</p></span><p class="label">Similar Functions:</p><p class="description">_recursiveReindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2009</p></span><h3 id="cloneNode">
	 Method Details: cloneNode</h3><hr/><br/><span class="content"><p class="prototype">function &amp;cloneNode($node, $recursive=FALSE)</p><p class="description">Clone a node and it's child nodes.</p><pre class="description">NOTE: If the node has children you *MUST* use the reference operator!
      E.g. $clonedNode =&amp; cloneNode($node);
      Otherwise the children will not point back to the parent, they will point 
      back to your temporary variable instead.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>mixed</i> <b>$node</b></dt><dd class="parameter"><p class="description">Either a node (hash array) or an abs. Xpath to a node in 
                         the current doc</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>&amp;array</i></span><span class="parameter"><p class="description">A node and it's child nodes.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2118</p></span><h3 id="match">
	 Method Details: match</h3><hr/><br/><span class="content"><p class="prototype">function match($xPathQuery, $baseXPath='')</p><p class="description">Matches (evaluates) an XPath query</p><pre class="description">This method tries to evaluate an XPath query by parsing it. A XML source must 
have been imported before this method is able to work.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">XPath query to be evaluated.</p></dd>
			<dt class="parameter"><i>string</i> <b>$baseXPath</b></dt><dd class="parameter"><p class="description">(default is super-root) XPath query to a single document node, 
                                  from which the XPath query should  start evaluating.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The result of the XPath expression.  Either: node-set (an ordered collection of nodes without duplicates)  boolean (true or false)  number (a floating-point number)  string (a sequence of UCS characters) </p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2193</p></span><h3 id="evaluate">
	 Method Details: evaluate</h3><hr/><br/><span class="content"><p class="prototype">function evaluate($xPathQuery, $baseXPath='')</p><p class="description">Alias for the match function</p><pre class="description"></pre><p class="label">Similar Functions:</p><p class="description">match()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2252</p></span><h3 id="equalNodes">
	 Method Details: equalNodes</h3><hr/><br/><span class="content"><p class="prototype">function equalNodes($node1, $node2)</p><p class="description">Compare two nodes to see if they are equal (point to the same node in the doc)</p><pre class="description">2 nodes are considered equal if the absolute XPath is equal.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>mixed</i> <b>$node1</b></dt><dd class="parameter"><p class="description">Either an absolute XPath to an node OR a real tree-node (hash-array)</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$node2</b></dt><dd class="parameter"><p class="description">Either an absolute XPath to an node OR a real tree-node (hash-array)</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE if equal (see text above), FALSE if not (and on error).</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4284</p></span><h3 id="getNodePath">
	 Method Details: getNodePath</h3><hr/><br/><span class="content"><p class="prototype">function getNodePath($node)</p><p class="description">Get the absolute XPath of a node that is in a document tree.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$node</b></dt><dd class="parameter"><p class="description">A real tree-node (hash-array)   </p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">The string path to the node or FALSE on error.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4296</p></span><h3 id="getParentXPath">
	 Method Details: getParentXPath</h3><hr/><br/><span class="content"><p class="prototype">function getParentXPath($absoluteXPath)</p><p class="description">Retrieves the absolute parent XPath query.</p><pre class="description">The parents stored in the tree are only relative parents...but all the parent
information is stored in the XPath query itself...so instead we use a function
to extract the parent from the absolute Xpath query</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$childPath</b></dt><dd class="parameter"><p class="description">String containing an absolute XPath query</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">returns the absolute XPath of the parent</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4323</p></span><h3 id="hasChildNodes">
	 Method Details: hasChildNodes</h3><hr/><br/><span class="content"><p class="prototype">function hasChildNodes($absoluteXPath)</p><p class="description">Returns TRUE if the given node has child nodes below it</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">full path of the potential parent node</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE if this node exists and has a child, FALSE otherwise</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4338</p></span></blockquote><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPathEngine-PrivateMethods">Private Method Detail</h2><blockquote xmlns="http://www.w3.org/TR/xhtml1/strict" class="methods"><h3 id="_export">
	 Method Details: _export</h3><hr/><br/><span class="content"><p class="prototype">function _export($absoluteXPath='', $xmlHeader=NULL, $hilightXpathList='')</p><p class="description">Generates a XML string with the content of the current document.</p><pre class="description">This is the start for extracting the XML-data from the node-tree. We do some preperations
and then call _InternalExport() to fetch the main XML-data. You optionally may pass 
xpath to any node that will then be used as top node, to extract XML-parts of the 
document. Default is '', meaning to extract the whole document.

You also may pass a 'xmlHeader' (usually something like &lt;?xml version="1.0"? > that will
overwrite any other 'xmlHeader', if there was one in the original source.  If there
wasn't one in the original source, and you still don't specify one, then it will
use a default of &lt;?xml version="1.0"? >
Finaly, when exporting to HTML, you may pass a vector xPaths you want to hi-light.
The hi-lighted tags and attributes will receive a nice color. 

NOTE I : The output can have 2 formats:
      a) If "skip white spaces" is/was set. (Not Recommended - slower)
         The output is formatted by adding indenting and carriage returns.
      b) If "skip white spaces" is/was *NOT* set.
         'as is'. No formatting is done. The output should the same as the 
         the original parsed XML source. </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">(optional, default is root) The node we choose as top-node</p></dd>
			<dt class="parameter"><i>string</i> <b>$xmlHeader</b></dt><dd class="parameter"><p class="description">(optional) content before &lt;root/> (see text above)</p></dd>
			<dt class="parameter"><i>array</i> <b>$hilightXpath</b></dt><dd class="parameter"><p class="description">(optional) a vector of xPaths to nodes we wat to 
                                 hi-light (see text above)</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The xml string, or FALSE on error.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1175</p></span><h3 id="_InternalExport">
	 Method Details: _InternalExport</h3><hr/><br/><span class="content"><p class="prototype">function _InternalExport($node)</p><p class="description">Export the xml document starting at the named node.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>node</i> <b>$node</b></dt><dd class="parameter"><p class="description">The node we have to start exporting from</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">The string representation of the node.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1248</p></span><h3 id="_handleStartElement">
	 Method Details: _handleStartElement</h3><hr/><br/><span class="content"><p class="prototype">function _handleStartElement($parser, $nodeName, $attributes)</p><p class="description">Handles opening XML tags while parsing.</p><pre class="description">While parsing a XML document for each opening tag this method is
called. It'll add the tag found to the tree of document nodes.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$parser</b></dt><dd class="parameter"><p class="description">Handler for accessing the current XML parser.</p></dd>
			<dt class="parameter"><i>string</i> <b>$name</b></dt><dd class="parameter"><p class="description">Name of the opening tag found in the document.</p></dd>
			<dt class="parameter"><i>array</i> <b>$attributes</b></dt><dd class="parameter"><p class="description">Associative array containing a list of
                             all attributes of the tag found in the document.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">_handleEndElement(), _handleCharacterData()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1704</p></span><h3 id="_handleEndElement">
	 Method Details: _handleEndElement</h3><hr/><br/><span class="content"><p class="prototype">function _handleEndElement($parser, $name)</p><p class="description">Handles closing XML tags while parsing.</p><pre class="description">While parsing a XML document for each closing tag this method is called.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$parser</b></dt><dd class="parameter"><p class="description">Handler for accessing the current XML parser.</p></dd>
			<dt class="parameter"><i>string</i> <b>$name</b></dt><dd class="parameter"><p class="description">Name of the closing tag found in the document.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">_handleStartElement(), _handleCharacterData()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1762</p></span><h3 id="_handleCharacterData">
	 Method Details: _handleCharacterData</h3><hr/><br/><span class="content"><p class="prototype">function _handleCharacterData($parser, $text)</p><p class="description">Handles character data while parsing.</p><pre class="description">While parsing a XML document for each character data this method
is called. It'll add the character data to the document tree.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$parser</b></dt><dd class="parameter"><p class="description">Handler for accessing the current XML parser.</p></dd>
			<dt class="parameter"><i>string</i> <b>$text</b></dt><dd class="parameter"><p class="description">Character data found in the document.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">_handleStartElement(), _handleEndElement()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1812</p></span><h3 id="_handleDefaultData">
	 Method Details: _handleDefaultData</h3><hr/><br/><span class="content"><p class="prototype">function _handleDefaultData($parser, $text)</p><p class="description">Default handler for the XML parser.  </p><pre class="description">While parsing a XML document for string not caught by one of the other
handler functions, we end up here.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$parser</b></dt><dd class="parameter"><p class="description">Handler for accessing the current XML parser.</p></dd>
			<dt class="parameter"><i>string</i> <b>$text</b></dt><dd class="parameter"><p class="description">Character data found in the document.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">_handleStartElement(), _handleEndElement()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1845</p></span><h3 id="_handlePI">
	 Method Details: _handlePI</h3><hr/><br/><span class="content"><p class="prototype">function _handlePI($parser, $target, $data)</p><p class="description">Handles processing instruction (PI)</p><pre class="description">A processing instruction has the following format: 
&lt;?  target data  ? > e.g.  &lt;? dtd version="1.0" ? >

Currently I have no bether idea as to left it 'as is' and treat the PI data as normal 
text (and adding the surrounding PI-tags &lt;? ? >). </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$parser</b></dt><dd class="parameter"><p class="description">Handler for accessing the current XML parser.</p></dd>
			<dt class="parameter"><i>string</i> <b>$target</b></dt><dd class="parameter"><p class="description">Name of the PI target. E.g. XML, PHP, DTD, ... </p></dd>
			<dt class="parameter"><i>string</i> <b>$data</b></dt><dd class="parameter"><p class="description">Associative array containing a list of</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">PHP's manual "xml_set_processing_instruction_handler"</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1873</p></span><h3 id="_createSuperRoot">
	 Method Details: _createSuperRoot</h3><hr/><br/><span class="content"><p class="prototype">function _createSuperRoot()</p><p class="description">Creates a super root node.</p><pre class="description"></pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1887</p></span><h3 id="_internalAppendChild">
	 Method Details: _internalAppendChild</h3><hr/><br/><span class="content"><p class="prototype">function _internalAppendChild($stackParentIndex, $nodeName)</p><p class="description">Adds a new node to the XML document tree during xml parsing.</p><pre class="description">This method adds a new node to the tree of nodes of the XML document
being handled by this class. The new node is created according to the
parameters passed to this method.  This method is a much watered down
version of appendChild(), used in parsing an xml file only.

It is assumed that adding starts with root and progresses through the
document in parse order.  New nodes must have a corresponding parent. And
once we have read the &lt;/> tag for the element we will never need to add
any more data to that node.  Otherwise the add will be ignored or fail.

The function is faciliated by a nodeStack, which is an array of nodes that
we have yet to close.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$stackParentIndex</b></dt><dd class="parameter"><p class="description">The index into the nodeStack[] of the parent
                                     node to which the new node should be added as 
                                     a child. *READONLY*</p></dd>
			<dt class="parameter"><i>string</i> <b>$nodeName</b></dt><dd class="parameter"><p class="description">Name of the new node. *READONLY*</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE if we successfully added a new child to  the node stack at index $stackParentIndex + 1, FALSE on error.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 1919</p></span><h3 id="_recursiveReindexNodeTree">
	 Method Details: _recursiveReindexNodeTree</h3><hr/><br/><span class="content"><p class="prototype">function _recursiveReindexNodeTree($absoluteParentPath)</p><p class="description">Here's where the work is done for reindexing (see reindexNodeTree)</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteParentPath</b></dt><dd class="parameter"><p class="description">the xPath to the parent node</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE otherwise.</p></span><p class="label">Similar Functions:</p><p class="description">reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2025</p></span><h3 id="__sleep">
	 Method Details: __sleep</h3><hr/><br/><span class="content"><p class="prototype">function __sleep()</p><p class="description">PHP cals this function when you call PHP's serialize. </p><pre class="description">It prevents cyclic referencing, which is why print_r() of an XPath object doesn't work.</pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2153</p></span><h3 id="__wakeup">
	 Method Details: __wakeup</h3><hr/><br/><span class="content"><p class="prototype">function __wakeup()</p><p class="description">PHP cals this function when you call PHP's unserialize. </p><pre class="description">It reindexes the node-tree</pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2168</p></span><h3 id="_removeLiterals">
	 Method Details: _removeLiterals</h3><hr/><br/><span class="content"><p class="prototype">function _removeLiterals($xPathQuery)</p><p class="description">Parse out the literals of an XPath expression.</p><pre class="description">Instead of doing a full lexical parse, we parse out the literal strings, and then
Treat the sections of the string either as parts of XPath or literal strings.  So
this function replaces each literal it finds with a literal reference, and then inserts
the reference into an array of strings that we can access.  The literals can be accessed
later from the literals associative array.

Example:
 XPathExpr = /AAA[@CCC = "hello"]/BBB[DDD = 'world'] 
 =>  literals: array("hello", "world")
     return value: /AAA[@CCC = $1]/BBB[DDD = $2] 

Note: This does not interfere with the VariableReference syntactical element, as these 
elements must not start with a number.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">XPath expression to be processed</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">The XPath expression without the literals. </p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2277</p></span><h3 id="_asLiteral">
	 Method Details: _asLiteral</h3><hr/><br/><span class="content"><p class="prototype">function _asLiteral($string)</p><p class="description">Returns the given string as a literal reference.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$string</b></dt><dd class="parameter"><p class="description">The string that we are processing</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The literal string.  FALSE if the string isn't a literal reference.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2312</p></span><h3 id="_addLiteral">
	 Method Details: _addLiteral</h3><hr/><br/><span class="content"><p class="prototype">function _addLiteral($string)</p><p class="description">Adds a literal to our array of literals</p><pre class="description">In order to make sure we don't interpret literal strings as XPath expressions, we have to
encode literal strings so that we know that they are not XPaths.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$string</b></dt><dd class="parameter"><p class="description">The literal string that we need to store for future access</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">A reference string to this literal.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2341</p></span><h3 id="_evaluateExpr">
	 Method Details: _evaluateExpr</h3><hr/><br/><span class="content"><p class="prototype">function _evaluateExpr($xPathQuery, $context)</p><p class="description">Internal recursive evaluate an-XPath-expression function.</p><pre class="description">$this->evaluate() is the entry point and does some inits, while this 
function is called recursive internaly for every sub-xPath expresion we find.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">XPath query to be evaluated.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">An associative array the describes the context from which
                                 to evaluate the XPath Expr.  Contains three members:
                                  'nodePath' => The absolute XPath expression to the context node
                                  'size' => The context size
                                  'pos' => The context position</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The result of the XPath expression.  Either: node-set (an ordered collection of nodes without duplicates)  boolean (true or false)  number (a floating-point number)  string (a sequence of UCS characters) </p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2368</p></span><h3 id="_evaluatePathExpr">
	 Method Details: _evaluatePathExpr</h3><hr/><br/><span class="content"><p class="prototype">function _evaluatePathExpr($PathExpr, $context)</p><p class="description">Internal recursive evaluate an Path expression.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$PathExpr</b></dt><dd class="parameter"><p class="description">PathExpr syntactical element</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The result of the XPath expression.  Either: node-set (an ordered collection of nodes without duplicates)  boolean (true or false)  number (a floating-point number)  string (a sequence of UCS characters) </p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2781</p></span><h3 id="_sortByDocOrder">
	 Method Details: _sortByDocOrder</h3><hr/><br/><span class="content"><p class="prototype">function _sortByDocOrder($xPathSet)</p><p class="description">Sort an xPathSet by doc order.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$xPathSet</b></dt><dd class="parameter"><p class="description">Array of full paths to nodes that need to be sorted</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">Array containing the same contents as $xPathSet, but with the contents in doc order</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2839</p></span><h3 id="_evaluateStep">
	 Method Details: _evaluateStep</h3><hr/><br/><span class="content"><p class="prototype">function _evaluateStep($steps, $context)</p><p class="description">Evaluate a step from a XPathQuery expression at a specific contextPath.</p><pre class="description">Steps are the arguments of a XPathQuery when divided by a '/'. A contextPath is a 
absolute XPath (or vector of XPaths) to a starting node(s) from which the step should 
be evaluated.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$steps</b></dt><dd class="parameter"><p class="description">Vector containing the remaining steps of the current 
                               XPathQuery expression.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">Vector of absolute XPath's as a result of the step  evaluation.  The results will not necessarily be in doc order</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 2937</p></span><h3 id="_checkPredicates">
	 Method Details: _checkPredicates</h3><hr/><br/><span class="content"><p class="prototype">function _checkPredicates($xPathSet, $predicates)</p><p class="description">Checks whether a node matches predicates.</p><pre class="description">This method checks whether a list of nodes passed to this method match
a given list of predicates. </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$xPathSet</b></dt><dd class="parameter"><p class="description">Array of full paths of all nodes to be tested.</p></dd>
			<dt class="parameter"><i>array</i> <b>$predicates</b></dt><dd class="parameter"><p class="description">Array of predicates to use.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">Vector of absolute XPath's that match the given predicates.</p></span><p class="label">Similar Functions:</p><p class="description">_evaluateStep()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3034</p></span><h3 id="_evaluateFunction">
	 Method Details: _evaluateFunction</h3><hr/><br/><span class="content"><p class="prototype">function _evaluateFunction($function, $arguments, $context)</p><p class="description">Evaluates an XPath function</p><pre class="description">This method evaluates a given XPath function with its arguments on a
specific node of the document.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$function</b></dt><dd class="parameter"><p class="description">Name of the function to be evaluated.</p></dd>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments being
                                 passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">This method returns the result of the evaluation of the function. Depending on the function the type of the  return value can be different.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3130</p></span><h3 id="_checkNodeTest">
	 Method Details: _checkNodeTest</h3><hr/><br/><span class="content"><p class="prototype">function _checkNodeTest($contextPath, $nodeTest)</p><p class="description">Checks whether a node matches a node-test.</p><pre class="description">This method checks whether a node in the document matches a given node-test.
A node test is something like text(), node(), or an element name.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">Full xpath of the node, which should be tested for 
                                matching the node-test.</p></dd>
			<dt class="parameter"><i>string</i> <b>$nodeTest</b></dt><dd class="parameter"><p class="description">String containing the node-test for the node.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>boolean</i></span><span class="parameter"><p class="description">This method returns TRUE if the node matches the  node-test, otherwise FALSE.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3188</p></span><h3 id="_getAxis">
	 Method Details: _getAxis</h3><hr/><br/><span class="content"><p class="prototype">function _getAxis($step, $context)</p><p class="description">Retrieves axis information from an XPath query step.</p><pre class="description">This method tries to extract the name of the axis and its node-test
from a given step of an XPath query at a given node.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$step</b></dt><dd class="parameter"><p class="description">String containing a step of an XPath query.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">Contains information about the axis found in the step.</p></span><p class="label">Similar Functions:</p><p class="description">_evaluateStep()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3262</p></span><h3 id="_handleAxis_child">
	 Method Details: _handleAxis_child</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_child($axis, $contextPath)</p><p class="description">Handles the XPath child axis.</p><pre class="description">This method handles the XPath child axis.  It essentially filters out the
children to match the name specified after the '/'.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should 
                               be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during  the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3402</p></span><h3 id="_handleAxis_parent">
	 Method Details: _handleAxis_parent</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_parent($axis, $contextPath)</p><p class="description">Handles the XPath parent axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the  evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3449</p></span><h3 id="_handleAxis_attribute">
	 Method Details: _handleAxis_attribute</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_attribute($axis, $contextPath)</p><p class="description">Handles the XPath attribute axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3468</p></span><h3 id="_handleAxis_self">
	 Method Details: _handleAxis_self</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_self($axis, $contextPath)</p><p class="description">Handles the XPath self axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3493</p></span><h3 id="_handleAxis_descendant">
	 Method Details: _handleAxis_descendant</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_descendant($axis, $contextPath)</p><p class="description">Handles the XPath descendant axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3511</p></span><h3 id="_handleAxis_ancestor">
	 Method Details: _handleAxis_ancestor</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_ancestor($axis, $contextPath)</p><p class="description">Handles the XPath ancestor axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3539</p></span><h3 id="_handleAxis_namespace">
	 Method Details: _handleAxis_namespace</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_namespace($axis, $contextPath)</p><p class="description">Handles the XPath namespace axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3564</p></span><h3 id="_handleAxis_following">
	 Method Details: _handleAxis_following</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_following($axis, $contextPath)</p><p class="description">Handles the XPath following axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3576</p></span><h3 id="_handleAxis_preceding">
	 Method Details: _handleAxis_preceding</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_preceding($axis, $contextPath)</p><p class="description">Handles the XPath preceding axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3611</p></span><h3 id="_handleAxis_following_sibling">
	 Method Details: _handleAxis_following_sibling</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_following_sibling($axis, $contextPath)</p><p class="description">Handles the XPath following-sibling axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3641</p></span><h3 id="_handleAxis_preceding_sibling">
	 Method Details: _handleAxis_preceding_sibling</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_preceding_sibling($axis, $contextPath)</p><p class="description">Handles the XPath preceding-sibling axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3677</p></span><h3 id="_handleAxis_descendant_or_self">
	 Method Details: _handleAxis_descendant_or_self</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_descendant_or_self($axis, $contextPath)</p><p class="description">Handles the XPath descendant-or-self axis.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3707</p></span><h3 id="_handleAxis_ancestor_or_self">
	 Method Details: _handleAxis_ancestor_or_self</h3><hr/><br/><span class="content"><p class="prototype">function _handleAxis_ancestor_or_self ( $axis, $contextPath)</p><p class="description">Handles the XPath ancestor-or-self axis.</p><pre class="description">This method handles the XPath ancestor-or-self axis.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$axis</b></dt><dd class="parameter"><p class="description">Array containing information about the axis.</p></dd>
			<dt class="parameter"><i>string</i> <b>$contextPath</b></dt><dd class="parameter"><p class="description">xpath to starting node from which the axis should be processed.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">A vector containing all nodes that were found, during the evaluation of the axis.</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3728</p></span><h3 id="_handleFunction_last">
	 Method Details: _handleFunction_last</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_last($arguments, $context)</p><p class="description">Handles the XPath function last.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3752</p></span><h3 id="_handleFunction_position">
	 Method Details: _handleFunction_position</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_position($arguments, $context)</p><p class="description">Handles the XPath function position.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3764</p></span><h3 id="_handleFunction_count">
	 Method Details: _handleFunction_count</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_count($arguments, $context)</p><p class="description">Handles the XPath function count.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3776</p></span><h3 id="_handleFunction_id">
	 Method Details: _handleFunction_id</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_id($arguments, $context)</p><p class="description">Handles the XPath function id.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3789</p></span><h3 id="_handleFunction_name">
	 Method Details: _handleFunction_name</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_name($arguments, $context)</p><p class="description">Handles the XPath function name.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3814</p></span><h3 id="_handleFunction_string">
	 Method Details: _handleFunction_string</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_string($arguments, $context)</p><p class="description">Handles the XPath function string.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3837</p></span><h3 id="_handleFunction_concat">
	 Method Details: _handleFunction_concat</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_concat($arguments, $context)</p><p class="description">Handles the XPath function concat.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3876</p></span><h3 id="_handleFunction_starts_with">
	 Method Details: _handleFunction_starts_with</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_starts_with($arguments, $context)</p><p class="description">Handles the XPath function starts-with.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3898</p></span><h3 id="_handleFunction_contains">
	 Method Details: _handleFunction_contains</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_contains($arguments, $context)</p><p class="description">Handles the XPath function contains.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3917</p></span><h3 id="_handleFunction_substring_before">
	 Method Details: _handleFunction_substring_before</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_substring_before($arguments, $context)</p><p class="description">Handles the XPath function substring-before.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3945</p></span><h3 id="_handleFunction_substring_after">
	 Method Details: _handleFunction_substring_after</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_substring_after($arguments, $context)</p><p class="description">Handles the XPath function substring-after.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3964</p></span><h3 id="_handleFunction_substring">
	 Method Details: _handleFunction_substring</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_substring($arguments, $context)</p><p class="description">Handles the XPath function substring.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 3983</p></span><h3 id="_handleFunction_string_length">
	 Method Details: _handleFunction_string_length</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_string_length($arguments, $context)</p><p class="description">Handles the XPath function string-length.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4008</p></span><h3 id="_handleFunction_normalize_space">
	 Method Details: _handleFunction_normalize_space</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_normalize_space($arguments, $context)</p><p class="description">Handles the XPath function normalize-space.</p><pre class="description">The normalize-space function returns the argument string with whitespace
normalized by stripping leading and trailing whitespace and replacing sequences
of whitespace characters by a single space.
If the argument is omitted, it defaults to the context node converted to a string,
in other words the string-value of the context node</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>stri</i></span><span class="parameter"><p class="description">g trimed string</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4029</p></span><h3 id="_handleFunction_translate">
	 Method Details: _handleFunction_translate</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_translate($arguments, $context)</p><p class="description">Handles the XPath function translate.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4047</p></span><h3 id="_handleFunction_boolean">
	 Method Details: _handleFunction_boolean</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_boolean($arguments, $context)</p><p class="description">Handles the XPath function boolean.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4067</p></span><h3 id="_handleFunction_not">
	 Method Details: _handleFunction_not</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_not($arguments, $context)</p><p class="description">Handles the XPath function not.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4112</p></span><h3 id="_handleFunction_true">
	 Method Details: _handleFunction_true</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_true($arguments, $context)</p><p class="description">Handles the XPath function TRUE.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4127</p></span><h3 id="_handleFunction_false">
	 Method Details: _handleFunction_false</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_false($arguments, $context)</p><p class="description">Handles the XPath function FALSE.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4139</p></span><h3 id="_handleFunction_lang">
	 Method Details: _handleFunction_lang</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_lang($arguments, $context)</p><p class="description">Handles the XPath function lang.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4151</p></span><h3 id="_handleFunction_number">
	 Method Details: _handleFunction_number</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_number($arguments, $context)</p><p class="description">Handles the XPath function number.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4173</p></span><h3 id="_handleFunction_sum">
	 Method Details: _handleFunction_sum</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_sum($arguments, $context)</p><p class="description">Handles the XPath function sum.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4206</p></span><h3 id="_handleFunction_floor">
	 Method Details: _handleFunction_floor</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_floor($arguments, $context)</p><p class="description">Handles the XPath function floor.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4231</p></span><h3 id="_handleFunction_ceiling">
	 Method Details: _handleFunction_ceiling</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_ceiling($arguments, $context)</p><p class="description">Handles the XPath function ceiling.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4247</p></span><h3 id="_handleFunction_round">
	 Method Details: _handleFunction_round</h3><hr/><br/><span class="content"><p class="prototype">function _handleFunction_round($arguments, $context)</p><p class="description">Handles the XPath function round.</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$arguments</b></dt><dd class="parameter"><p class="description">String containing the arguments that were passed to the function.</p></dd>
			<dt class="parameter"><i>array</i> <b>$context</b></dt><dd class="parameter"><p class="description">The context from which to evaluate the function</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Depending on the type of function being processed</p></span><p class="label">Similar Functions:</p><p class="description">evaluate()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4263</p></span><h3 id="_translateAmpersand">
	 Method Details: _translateAmpersand</h3><hr/><br/><span class="content"><p class="prototype">function _translateAmpersand($xmlSource, $reverse=FALSE)</p><p class="description">Translate all ampersands to it's literal entities '&amp;amp;' and back.</p><pre class="description">I wasn't aware of this problem at first but it's important to understand why we do this.
At first you must know:
a) PHP's XML parser *translates* all entities to the equivalent char E.g. &amp;lt; is returned as '&lt;'
b) PHP's XML parser (in V 4.1.0) has problems with most *literal* entities! The only one's that are 
   recognized are &amp;amp;, &amp;lt; &amp;gt; and &amp;quot;. *ALL* others (like &amp;nbsp; &amp;copy; a.s.o.) cause an 
   XML_ERROR_UNDEFINED_ENTITY error. I reported this as bug at http://bugs.php.net/bug.php?id=15092
   (It turned out not to be a 'real' bug, but one of those nice W3C-spec things).

Forget position b) now. It's just for info. Because the way we will solve a) will also solve b) too. 

THE PROBLEM
To understand the problem, here a sample:
Given is the following XML:    "&lt;AAA> &amp;lt; &amp;nbsp; &amp;gt; &lt;/AAA>"
  Try to parse it and PHP's XML parser will fail with a XML_ERROR_UNDEFINED_ENTITY becaus of 
  the unknown litteral-entity '&amp;nbsp;'. (The numeric equivalent '&amp;#160;' would work though). 
Next try is to use the numeric equivalent 160 for '&amp;nbsp;', thus  "&lt;AAA> &amp;lt; &amp;#160; &amp;gt; &lt;/AAA>"
  The data we receive in the tag &lt;AAA> is  " &lt;   > ". So we get the *translated entities* and 
  NOT the 3 entities &amp;lt; &amp;#160; &amp;gt. Thus, we will not even notice that there were entities at all!
  In *most* cases we're not able to tell if the data was given as entity or as 'normal' char.
  E.g. When receiving a quote or a single space were not able to tell if it was given as 'normal' char
  or as &amp;nbsp; or &amp;quot;. Thus we loose the entity-information of the XML-data!

THE SOLUTION
The better solution is to keep the data 'as is' by replacing the '&amp;' before parsing begins.
E.g. Taking the original input from above, this would result in "&lt;AAA> &amp;amp;lt; &amp;amp;nbsp; &amp;amp;gt; &lt;/AAA>"
The data we receive now for the tag &lt;AAA> is  " &amp;lt; &amp;nbsp; &amp;gt; ". and that's what we want.

The bad thing is, that a global replace will also replace data in section that are NOT translated by the 
PHP XML-parser. That is comments (&lt;!-- -->), IP-sections (stuff between &lt;? ? >) and CDATA-block too.
So all data comming from those sections must be reversed. This is done during the XML parse phase.
So:
a) Replacement of all '&amp;' in the XML-source.
b) All data that is not char-data or in CDATA-block have to be reversed during the XML-parse phase.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xmlSource</b></dt><dd class="parameter"><p class="description">The XML string</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>string</i></span><span class="parameter"><p class="description">The XML string with translated ampersands.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4383</p></span></blockquote><h1 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPath">Class XPath</h1><p xmlns="http://www.w3.org/TR/xhtml1/strict">The <b>XPath</b> class extends the 
		<a href="#XPathEngine">XPathEngine</a>
		class.</p><ul xmlns="http://www.w3.org/TR/xhtml1/strict"><li><a href="#XPath-PublicList">Public Methods</a></li><li><a href="#XPath-PrivateList">Private Methods</a></li><li><a href="#XPath-PublicMethods">Public Methods Detail</a></li><li><a href="#XPath-PrivateMethods">Private Methods Detail</a></li></ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPath-PublicList">Public Methods</h2><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#XPath">XPath</a> : 
				</span><span style="margin-top:0;">Constructor of the class</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#reset">reset</a> : 
				</span><span style="margin-top:0;">Resets the object so it's able to take a new xml sting/file</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setModMatch">setModMatch</a> : 
				</span><span style="margin-top:0;">Resolves and xPathQuery array depending on the property['modMatch']</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#nodeName">nodeName</a> : 
				</span><span style="margin-top:0;">Retrieves the name(s) of a node or a group of document nodes.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#removeChild">removeChild</a> : 
				</span><span style="margin-top:0;">Removes a node from the XML document.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#replaceChildByData">replaceChildByData</a> : 
				</span><span style="margin-top:0;">Replace a node with any data string. The $data is taken 1:1.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#replaceChild">replaceChild</a> : 
				</span><span style="margin-top:0;">Replace the node(s) that matches the xQuery with the passed node (or passed node-tree)</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#insertChild">insertChild</a> : 
				</span><span style="margin-top:0;">Insert passed node (or passed node-tree) at the node(s) that matches the xQuery.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#appendChild">appendChild</a> : 
				</span><span style="margin-top:0;">Appends a child to anothers children.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#insertBefore">insertBefore</a> : 
				</span><span style="margin-top:0;">Inserts a node before the reference node with the same parent.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getAttributes">getAttributes</a> : 
				</span><span style="margin-top:0;">Retrieves a dedecated attribute value or a hash-array of all attributes of a node.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setAttribute">setAttribute</a> : 
				</span><span style="margin-top:0;">Set attributes of a node(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#setAttributes">setAttributes</a> : 
				</span><span style="margin-top:0;">Version of setAttribute() that sets multiple attributes to node(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#removeAttribute">removeAttribute</a> : 
				</span><span style="margin-top:0;">Removes an attribute of a node(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getData">getData</a> : 
				</span><span style="margin-top:0;">Retrieve all the text from a node as a single string.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#getDataParts">getDataParts</a> : 
				</span><span style="margin-top:0;">Retrieve all the text from a node as a vector of strings</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#substringData">substringData</a> : 
				</span><span style="margin-top:0;">Retrieves a sub string of a text-part OR attribute-value.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#replaceData">replaceData</a> : 
				</span><span style="margin-top:0;">Replace a sub string of a text-part OR attribute-value.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#insertData">insertData</a> : 
				</span><span style="margin-top:0;">Insert a sub string in a text-part OR attribute-value.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#appendData">appendData</a> : 
				</span><span style="margin-top:0;">Append text data to the end of the text for an attribute OR node text-part.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#deleteData">deleteData</a> : 
				</span><span style="margin-top:0;">Delete the data of a node.</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#decodeEntities">decodeEntities</a> : 
				</span><span style="margin-top:0;">Decodes the character set entities in the given string.</span></nobr></li>
	</ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPath-PrivateList">Private Methods</h2><p xmlns="http://www.w3.org/TR/xhtml1/strict">You really shouldn't be raking about in these functions, as you should only be
	using the public interface.  But if you need more control, then these are the
	internal functions that you can use if you want to get your hands really dirty.</p><ul xmlns="http://www.w3.org/TR/xhtml1/strict">
		<li><nobr><span class="label" style="width:330"><a href="#_xml2Document">_xml2Document</a> : 
				</span><span style="margin-top:0;">Parse the XML to a node-tree. A so called 'document'</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_getTextSet">_getTextSet</a> : 
				</span><span style="margin-top:0;">Get a reference-list to node text part(s) or node attribute(s).</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_resolveXPathQueryForNodeMod">_resolveXPathQueryForNodeMod</a> : 
				</span><span style="margin-top:0;">Resolves an xPathQuery vector for a node op for modification</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_resolveXPathQuery">_resolveXPathQuery</a> : 
				</span><span style="margin-top:0;">Resolves an xPathQuery vector depending on the property['modMatch']</span></nobr></li>
	
		<li><nobr><span class="label" style="width:330"><a href="#_title">_title</a> : 
				</span><span style="margin-top:0;">Produces a short title line.</span></nobr></li>
	</ul><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPath-PublicMethods">Public Method Detail</h2><blockquote xmlns="http://www.w3.org/TR/xhtml1/strict" class="methods"><h3 id="XPath">
	 Method Details: XPath</h3><hr/><br/><span class="content"><p class="prototype">function XPath($fileName='', $userXmlOptions=array())</p><p class="description">Constructor of the class</p><pre class="description">Optionally you may call this constructor with the XML-filename to parse and the 
XML option vector. A option vector sample: 
  $xmlOpt = array(XML_OPTION_CASE_FOLDING => FALSE, XML_OPTION_SKIP_WHITE => TRUE);</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>array</i> <b>$userXmlOptions</b></dt><dd class="parameter"><p class="description">(optional) Vector of (&lt;optionID>=>&lt;value>, &lt;optionID>=>&lt;value>, ...)</p></dd>
			<dt class="parameter"><i>string</i> <b>$fileName</b></dt><dd class="parameter"><p class="description">(optional) Filename of XML file to load from.
                                  It is recommended that you call importFromFile()
                                  instead as you will get an error code.  If the
                                  import fails, the object will be set to FALSE.</p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">parent::XPathEngine()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4416</p></span><h3 id="reset">
	 Method Details: reset</h3><hr/><br/><span class="content"><p class="prototype">function reset()</p><p class="description">Resets the object so it's able to take a new xml sting/file</p><pre class="description">Constructing objects is slow.  If you can, reuse ones that you have used already
by using this reset() function.</pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4432</p></span><h3 id="setModMatch">
	 Method Details: setModMatch</h3><hr/><br/><span class="content"><p class="prototype">function setModMatch($modMatch = XPATH_QUERYHIT_ALL)</p><p class="description">Resolves and xPathQuery array depending on the property['modMatch']</p><pre class="description">Most of the modification functions of XPath will also accept a xPathQuery (instead 
of an absolute Xpath). The only problem is that the query could match more the one 
node. The question is, if the none, the fist or all nodes are to be modified.
The behaver can be set with setModMatch()  </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>int</i> <b>$modMatch</b></dt><dd class="parameter"><p class="description">One of the following:
                        - XPATH_QUERYHIT_ALL (default) 
                        - XPATH_QUERYHIT_FIRST
                        - XPATH_QUERYHIT_UNIQUE // If the query matches more then one node. </p></dd>
			</dl><p class="label">Similar Functions:</p><p class="description">_resolveXPathQuery()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4455</p></span><h3 id="nodeName">
	 Method Details: nodeName</h3><hr/><br/><span class="content"><p class="prototype">function nodeName($xPathQuery)</p><p class="description">Retrieves the name(s) of a node or a group of document nodes.</p><pre class="description">This method retrieves the names of a group of document nodes
specified in the argument.  So if the argument was '/A[1]/B[2]' then it
would return 'B' if the node did exist in the tree.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>mixed</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">Array or single full document path(s) of the node(s), 
                             from which the names should be retrieved.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">Array or single string of the names of the specified  nodes, or just the individual name.  If the node did  not exist, then returns FALSE.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4484</p></span><h3 id="removeChild">
	 Method Details: removeChild</h3><hr/><br/><span class="content"><p class="prototype">function removeChild($xPathQuery, $autoReindex=TRUE)</p><p class="description">Removes a node from the XML document.</p><pre class="description">This method removes a node from the tree of nodes of the XML document. If the node 
is a document node, all children of the node and its character data will be removed. 
If the node is an attribute node, only this attribute will be removed, the node to which 
the attribute belongs as well as its children will remain unmodified.

NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>bool</i> <b>$autoReindex</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Reindex the document to reflect 
                               the changes.  A performance helper.  See reindexNodeTree()</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE on error;</p></span><p class="label">Similar Functions:</p><p class="description">setModMatch(), reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4525</p></span><h3 id="replaceChildByData">
	 Method Details: replaceChildByData</h3><hr/><br/><span class="content"><p class="prototype">function replaceChildByData($xPathQuery, $data, $autoReindex=TRUE)</p><p class="description">Replace a node with any data string. The $data is taken 1:1.</p><pre class="description">This function will delete the node you define by $absoluteXPath (plus it's sub-nodes) and 
substitute it by the string $text. Often used to push in not well formed HTML.
WARNING: 
  The $data is taken 1:1. 
  You are in charge that the data you enter is valid XML if you intend
  to export and import the content again.

NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>string</i> <b>$data</b></dt><dd class="parameter"><p class="description">String containing the content to be set. *READONLY*</p></dd>
			<dt class="parameter"><i>bool</i> <b>$autoReindex</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Reindex the document to reflect 
                               the changes.  A performance helper.  See reindexNodeTree()</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE on error;</p></span><p class="label">Similar Functions:</p><p class="description">setModMatch(), replaceChild(), reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4587</p></span><h3 id="replaceChild">
	 Method Details: replaceChild</h3><hr/><br/><span class="content"><p class="prototype">function &amp;replaceChild($xPathQuery, $node, $autoReindex=TRUE)</p><p class="description">Replace the node(s) that matches the xQuery with the passed node (or passed node-tree)</p><pre class="description">If the passed node is a string it's assumed to be XML and replaceChildByXml() 
will be called.
NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">Xpath to the node being replaced.</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$node</b></dt><dd class="parameter"><p class="description">String or Array (Usually a String)
                               If string: Vaild XML. E.g. "&lt;A/>" or "&lt;A> foo &lt;B/> bar &lt;A/>"
                               If array:  A Node (can be a whole sub-tree) (See comment in header)</p></dd>
			<dt class="parameter"><i>bool</i> <b>$autoReindex</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Reindex the document to reflect 
                               the changes.  A performance helper.  See reindexNodeTree()</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">The last replaced $node (can be a whole sub-tree)</p></span><p class="label">Similar Functions:</p><p class="description">reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4639</p></span><h3 id="insertChild">
	 Method Details: insertChild</h3><hr/><br/><span class="content"><p class="prototype">function insertChild($xPathQuery, $node, $shiftRight=TRUE, $afterText=TRUE, $autoReindex=TRUE)</p><p class="description">Insert passed node (or passed node-tree) at the node(s) that matches the xQuery.</p><pre class="description">With parameters you can define if the 'hit'-node is shifted to the right or left 
and if it's placed before of after the text-part.
Per derfault the 'hit'-node is shifted to the right and the node takes the place 
the of the 'hit'-node. 
NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.

E.g. Following is given:           AAA[1]           
                                 /       \          
                             ..BBB[1]..BBB[2] ..    

a) insertChild('/AAA[1]/BBB[2]', &lt;node CCC>)
b) insertChild('/AAA[1]/BBB[2]', &lt;node CCC>, $shiftRight=FALSE)
c) insertChild('/AAA[1]/BBB[2]', &lt;node CCC>, $shiftRight=FALSE, $afterText=FALSE)

a)                          b)                           c)                        
         AAA[1]                       AAA[1]                       AAA[1]          
       /    |   \                   /    |   \                   /    |   \        
 ..BBB[1]..CCC[1]BBB[2]..     ..BBB[1]..BBB[2]..CCC[1]     ..BBB[1]..BBB[2]CCC[1]..

#### Do a complete review of the "(optional)" tag after several arguments.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">Xpath to the node to append.</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$node</b></dt><dd class="parameter"><p class="description">String or Array (Usually a String)
                               If string: Vaild XML. E.g. "&lt;A/>" or "&lt;A> foo &lt;B/> bar &lt;A/>"
                               If array:  A Node (can be a whole sub-tree) (See comment in header)</p></dd>
			<dt class="parameter"><i>bool</i> <b>$shiftRight</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Shift the target node to the right.</p></dd>
			<dt class="parameter"><i>bool</i> <b>$afterText</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Insert after the text.</p></dd>
			<dt class="parameter"><i>bool</i> <b>$autoReindex</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Reindex the document to reflect 
                                the changes.  A performance helper.  See reindexNodeTree()</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">FALSE on error (or no match). On success we return the path(s) to the newly appended nodes. That is: Array of paths if more then 1 node was added or a single path string if only one node was added. NOTE:  If autoReindex is FALSE, then we can't return the *complete* path as the exact doc-pos isn't available without reindexing. In that case we leave out the last [docpos] in the path(s). ie  we'd return /A[3]/B instead of /A[3]/B[2]</p></span><p class="label">Similar Functions:</p><p class="description">appendChildByXml(), reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4715</p></span><h3 id="appendChild">
	 Method Details: appendChild</h3><hr/><br/><span class="content"><p class="prototype">function appendChild($xPathQuery, $node, $afterText=FALSE, $autoReindex=TRUE)</p><p class="description">Appends a child to anothers children.</p><pre class="description">If you intend to do a lot of appending, you should leave autoIndex as FALSE
and then call reindexNodeTree() when you are finished all the appending.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">Xpath to the node to append to.</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$node</b></dt><dd class="parameter"><p class="description">String or Array (Usually a String)
                               If string: Vaild XML. E.g. "&lt;A/>" or "&lt;A> foo &lt;B/> bar &lt;A/>"
                               If array:  A Node (can be a whole sub-tree) (See comment in header)</p></dd>
			<dt class="parameter"><i>bool</i> <b>$afterText</b></dt><dd class="parameter"><p class="description">(optional, default=FALSE) Insert after the text.</p></dd>
			<dt class="parameter"><i>bool</i> <b>$autoReindex</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Reindex the document to reflect 
                               the changes.  A performance helper.  See reindexNodeTree()</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">FALSE on error (or no match). On success we return the path(s) to the newly appended nodes. That is: Array of paths if more then 1 node was added or a single path string if only one node was added. NOTE:  If autoReindex is FALSE, then we can't return the *complete* path as the exact doc-pos isn't available without reindexing. In that case we leave out the last [docpos] in the path(s). ie  we'd return /A[3]/B instead of /A[3]/B[2]</p></span><p class="label">Similar Functions:</p><p class="description">insertChild(), reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4805</p></span><h3 id="insertBefore">
	 Method Details: insertBefore</h3><hr/><br/><span class="content"><p class="prototype">function insertBefore($xPathQuery, $node, $afterText=TRUE, $autoReindex=TRUE)</p><p class="description">Inserts a node before the reference node with the same parent.</p><pre class="description">If you intend to do a lot of appending, you should leave autoIndex as FALSE
and then call reindexNodeTree() when you are finished all the appending.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">Xpath to the node to insert new node before</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$node</b></dt><dd class="parameter"><p class="description">String or Array (Usually a String)
                               If string: Vaild XML. E.g. "&lt;A/>" or "&lt;A> foo &lt;B/> bar &lt;A/>"
                               If array:  A Node (can be a whole sub-tree) (See comment in header)</p></dd>
			<dt class="parameter"><i>bool</i> <b>$afterText</b></dt><dd class="parameter"><p class="description">(optional, default=FLASE) Insert after the text.</p></dd>
			<dt class="parameter"><i>bool</i> <b>$autoReindex</b></dt><dd class="parameter"><p class="description">(optional, default=TRUE) Reindex the document to reflect 
                               the changes.  A performance helper.  See reindexNodeTree()</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">FALSE on error (or no match). On success we return the path(s) to the newly appended nodes. That is: Array of paths if more then 1 node was added or a single path string if only one node was added. NOTE:  If autoReindex is FALSE, then we can't return the *complete* path as the exact doc-pos isn't available without reindexing. In that case we leave out the last [docpos] in the path(s). ie  we'd return /A[3]/B instead of /A[3]/B[2]</p></span><p class="label">Similar Functions:</p><p class="description">reindexNodeTree()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4878</p></span><h3 id="getAttributes">
	 Method Details: getAttributes</h3><hr/><br/><span class="content"><p class="prototype">function getAttributes($absoluteXPath, $attrName=NULL)</p><p class="description">Retrieves a dedecated attribute value or a hash-array of all attributes of a node.</p><pre class="description">The first param $absoluteXPath must be a valid xpath OR a xpath-query that results 
to *one* xpath. If the second param $attrName is not set, a hash-array of all attributes 
of that node is returned.

Optionally you may pass an attrubute name in $attrName and the function will return the 
string value of that attribute.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">Full xpath OR a xpath-query that results to *one* xpath.</p></dd>
			<dt class="parameter"><i>string</i> <b>$attrName</b></dt><dd class="parameter"><p class="description">(Optional) The name of the attribute. See above.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">hash-array or a string of attributes depending if the  parameter $attrName was set (see above).  FALSE if the  node or attribute couldn't be found.</p></span><p class="label">Similar Functions:</p><p class="description">setAttribute(), removeAttribute()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4904</p></span><h3 id="setAttribute">
	 Method Details: setAttribute</h3><hr/><br/><span class="content"><p class="prototype">function setAttribute($xPathQuery, $name, $value, $overwrite=TRUE)</p><p class="description">Set attributes of a node(s).</p><pre class="description">This method sets a number single attributes. An existing attribute is overwritten (default)
with the new value, but setting the last param to FALSE will prevent overwritten.
NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>string</i> <b>$name</b></dt><dd class="parameter"><p class="description">Attribute name.</p></dd>
			<dt class="parameter"><i>string</i> <b>$value</b></dt><dd class="parameter"><p class="description">Attribute value.   </p></dd>
			<dt class="parameter"><i>bool</i> <b>$overwrite</b></dt><dd class="parameter"><p class="description">If the attribute is already set we overwrite it (see text above)</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE on failure.</p></span><p class="label">Similar Functions:</p><p class="description">getAttribute(), removeAttribute()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4937</p></span><h3 id="setAttributes">
	 Method Details: setAttributes</h3><hr/><br/><span class="content"><p class="prototype">function setAttributes($xPathQuery, $attributes, $overwrite=TRUE)</p><p class="description">Version of setAttribute() that sets multiple attributes to node(s).</p><pre class="description">This method sets a number of attributes. Existing attributes are overwritten (default)
with the new values, but setting the last param to FALSE will prevent overwritten.
NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>array</i> <b>$attributes</b></dt><dd class="parameter"><p class="description">associative array of attributes to set.</p></dd>
			<dt class="parameter"><i>bool</i> <b>$overwrite</b></dt><dd class="parameter"><p class="description">If the attributes are already set we overwrite them (see text above)</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE otherwise</p></span><p class="label">Similar Functions:</p><p class="description">setAttribute(), getAttribute(), removeAttribute()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4955</p></span><h3 id="removeAttribute">
	 Method Details: removeAttribute</h3><hr/><br/><span class="content"><p class="prototype">function removeAttribute($xPathQuery, $attrList=NULL)</p><p class="description">Removes an attribute of a node(s).</p><pre class="description">This method removes *ALL* attributres per default unless the second parameter $attrList is set.
$attrList can be either a single attr-name as string OR a vector of attr-names as array.
E.g. 
 removeAttribute(&lt;xPath>);                     # will remove *ALL* attributes.
 removeAttribute(&lt;xPath>, 'A');                # will only remove attributes called 'A'.
 removeAttribute(&lt;xPath>, array('A_1','A_2')); # will remove attribute 'A_1' and 'A_2'.
NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>mixed</i> <b>$attrList</b></dt><dd class="parameter"><p class="description">(optional) if not set will delete *all* (see text above)</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, FALSE if the node couldn't be found</p></span><p class="label">Similar Functions:</p><p class="description">getAttribute(), setAttribute()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 4995</p></span><h3 id="getData">
	 Method Details: getData</h3><hr/><br/><span class="content"><p class="prototype">function getData($xPathQuery)</p><p class="description">Retrieve all the text from a node as a single string.</p><pre class="description">Sample  
Given is: &lt;AA> This &lt;BB\>is &lt;BB\>  some&lt;BB\>text &lt;/AA>
Return of getData('/AA[1]') would be:  " This is   sometext "
The first param $xPathQuery must be a valid xpath OR a xpath-query that 
results to *one* xpath. </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node - resolves to *one* xpath.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The returned string (see above), FALSE if the node  couldn't be found or is not unique.</p></span><p class="label">Similar Functions:</p><p class="description">getDataParts()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5034</p></span><h3 id="getDataParts">
	 Method Details: getDataParts</h3><hr/><br/><span class="content"><p class="prototype">function getDataParts($xPathQuery)</p><p class="description">Retrieve all the text from a node as a vector of strings</p><pre class="description">Where each element of the array was interrupted by a non-text child element.

Sample  
Given is: &lt;AA> This &lt;BB\>is &lt;BB\>  some&lt;BB\>text &lt;/AA>
Return of getDataParts('/AA[1]') would be:  array([0]=>' This ', [1]=>'is ', [2]=>'  some', [3]=>'text ');
The first param $absoluteXPath must be a valid xpath OR a xpath-query that results 
to *one* xpath. </pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node - resolves to *one* xpath.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The returned array (see above), or FALSE if node is not  found or is not unique.</p></span><p class="label">Similar Functions:</p><p class="description">getData()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5056</p></span><h3 id="substringData">
	 Method Details: substringData</h3><hr/><br/><span class="content"><p class="prototype">function substringData($absoluteXPath, $offset = 0, $count = NULL)</p><p class="description">Retrieves a sub string of a text-part OR attribute-value.</p><pre class="description">This method retrieves the sub string of a specific text-part OR (if the 
$absoluteXPath references an attribute) the the sub string  of the attribute value.
If no 'direct referencing' is used (Xpath ends with text()[&lt;part-number>]), then 
the first text-part of the node ist returned (if exsiting).</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$absoluteXPath</b></dt><dd class="parameter"><p class="description">Xpath to the node (See note above).   </p></dd>
			<dt class="parameter"><i>int</i> <b>$offset</b></dt><dd class="parameter"><p class="description">(optional, default is 0) Starting offset. (Just like PHP's substr())</p></dd>
			<dt class="parameter"><i>number</i> <b>$count</b></dt><dd class="parameter"><p class="description">(optional, default is ALL) Character count  (Just like PHP's substr())</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The sub string, FALSE if not found or on error</p></span><p class="label">Similar Functions:</p><p class="description">XPathEngine::wholeText(), PHP's substr()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5097</p></span><h3 id="replaceData">
	 Method Details: replaceData</h3><hr/><br/><span class="content"><p class="prototype">function replaceData($xPathQuery, $replacement, $offset = 0, $count = 0, $textPartNr=1)</p><p class="description">Replace a sub string of a text-part OR attribute-value.</p><pre class="description">NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>string</i> <b>$replacement</b></dt><dd class="parameter"><p class="description">The string to replace with.</p></dd>
			<dt class="parameter"><i>int</i> <b>$offset</b></dt><dd class="parameter"><p class="description">(optional, default is 0) Starting offset. (Just like PHP's substr_replace ())</p></dd>
			<dt class="parameter"><i>number</i> <b>$count</b></dt><dd class="parameter"><p class="description">(optional, default is 0=ALL) Character count  (Just like PHP's substr_replace())</p></dd>
			<dt class="parameter"><i>int</i> <b>$textPartNr</b></dt><dd class="parameter"><p class="description">(optional) (see _getTextSet() )</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">The new string value on success, FALSE if not found or on error</p></span><p class="label">Similar Functions:</p><p class="description">substringData()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5120</p></span><h3 id="insertData">
	 Method Details: insertData</h3><hr/><br/><span class="content"><p class="prototype">function insertData($xPathQuery, $data, $offset=0)</p><p class="description">Insert a sub string in a text-part OR attribute-value.</p><pre class="description">NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>string</i> <b>$data</b></dt><dd class="parameter"><p class="description">The string to replace with.</p></dd>
			<dt class="parameter"><i>int</i> <b>$offset</b></dt><dd class="parameter"><p class="description">(optional, default is 0) Offset at which to insert the data.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">The new string on success, FALSE if not found or on error</p></span><p class="label">Similar Functions:</p><p class="description">replaceData()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5145</p></span><h3 id="appendData">
	 Method Details: appendData</h3><hr/><br/><span class="content"><p class="prototype">function appendData($xPathQuery, $data, $textPartNr=1)</p><p class="description">Append text data to the end of the text for an attribute OR node text-part.</p><pre class="description">This method adds content to a node. If it's an attribute node, then
the value of the attribute will be set, otherwise the passed data will append to 
character data of the node text-part. Per default the first text-part is taken.

NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">to the node(s) (See note above).</p></dd>
			<dt class="parameter"><i>string</i> <b>$data</b></dt><dd class="parameter"><p class="description">String containing the content to be added.</p></dd>
			<dt class="parameter"><i>int</i> <b>$textPartNr</b></dt><dd class="parameter"><p class="description">(optional, default is 1) (see _getTextSet())</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, otherwise FALSE</p></span><p class="label">Similar Functions:</p><p class="description">_getTextSet()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5165</p></span><h3 id="deleteData">
	 Method Details: deleteData</h3><hr/><br/><span class="content"><p class="prototype">function deleteData($xPathQuery, $offset=0, $count=0, $textPartNr=1)</p><p class="description">Delete the data of a node.</p><pre class="description">This method deletes content of a node. If it's an attribute node, then
the value of the attribute will be removed, otherwise the node text-part. 
will be deleted.  Per default the first text-part is deleted.

NOTE: When passing a xpath-query instead of an abs. Xpath.
      Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">to the node(s) (See note above).</p></dd>
			<dt class="parameter"><i>int</i> <b>$offset</b></dt><dd class="parameter"><p class="description">(optional, default is 0) Starting offset. (Just like PHP's substr_replace())</p></dd>
			<dt class="parameter"><i>number</i> <b>$count</b></dt><dd class="parameter"><p class="description">(optional, default is 0=ALL) Character count.  (Just like PHP's substr_replace())</p></dd>
			<dt class="parameter"><i>int</i> <b>$textPartNr</b></dt><dd class="parameter"><p class="description">(optional, default is 0) the text part to delete (see _getTextSet())</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>bool</i></span><span class="parameter"><p class="description">TRUE on success, otherwise FALSE</p></span><p class="label">Similar Functions:</p><p class="description">_getTextSet()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5191</p></span><h3 id="decodeEntities">
	 Method Details: decodeEntities</h3><hr/><br/><span class="content"><p class="prototype">function decodeEntities($encodedData, $reverse=FALSE)</p><p class="description">Decodes the character set entities in the given string.</p><pre class="description">This function is given for convenience, as all text strings or attributes
are going to come back to you with their entities still encoded.  You can
use this function to remove these entites.

It makes use of the get_html_translation_table(HTML_ENTITIES) php library 
call, so is limited in the same ways.  At the time of writing this seemed
be restricted to iso-8859-1

### Provide an option that will do this by default.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>mixed</i> <b>$encodedData</b></dt><dd class="parameter"><p class="description">The string or array that has entities you would like to remove</p></dd>
			<dt class="parameter"><i>bool</i> <b>$reverse</b></dt><dd class="parameter"><p class="description">If TRUE entities will be encoded rather than decoded, ie
                             &lt; to &amp;lt; rather than &amp;lt; to &lt;.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">The string or array returned with entities decoded.</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5225</p></span></blockquote><h2 xmlns="http://www.w3.org/TR/xhtml1/strict" id="XPath-PrivateMethods">Private Method Detail</h2><blockquote xmlns="http://www.w3.org/TR/xhtml1/strict" class="methods"><h3 id="_xml2Document">
	 Method Details: _xml2Document</h3><hr/><br/><span class="content"><p class="prototype">function &amp;_xml2Document($xmlString)</p><p class="description">Parse the XML to a node-tree. A so called 'document'</p><pre class="description"></pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xmlString</b></dt><dd class="parameter"><p class="description">The string to turn into a document node.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>&amp;array</i></span><span class="parameter"><p class="description">a node-tree</p></span><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5262</p></span><h3 id="_getTextSet">
	 Method Details: _getTextSet</h3><hr/><br/><span class="content"><p class="prototype">function _getTextSet($xPathQuery, $textPartNr=1)</p><p class="description">Get a reference-list to node text part(s) or node attribute(s).</p><pre class="description">If the Xquery references an attribute(s) (Xquery ends with attribute::), 
then the text value of the node-attribute(s) is/are returned.
Otherwise the Xquery is referencing to text part(s) of node(s). This can be either a 
direct reference to text part(s) (Xquery ends with text()[&lt;nr>]) or indirect reference 
(a simple Xquery to node(s)).
1) Direct Reference (Xquery ends with text()[&lt;part-number>]):
  If the 'part-number' is omitted, the first text-part is assumed; starting by 1.
  Negative numbers are allowed, where -1 is the last text-part a.s.o.
2) Indirect Reference (a simple  Xquery to node(s)):
  Default is to return the first text part(s). Optionally you may pass a parameter 
  $textPartNr to define the text-part you want;  starting by 1.
  Negative numbers are allowed, where -1 is the last text-part a.s.o.

NOTE I : The returned vector is a set of references to the text parts / attributes.
         This is handy, if you wish to modify the contents.
NOTE II: text-part numbers out of range will not be in the list
NOTE III:Instead of an absolute xpath you may also pass a xpath-query.
         Depending on setModMatch() one, none or multiple nodes are affected.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">xpath to the node (See note above).</p></dd>
			<dt class="parameter"><i>int</i> <b>$textPartNr</b></dt><dd class="parameter"><p class="description">String containing the content to be set.</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>mixed</i></span><span class="parameter"><p class="description">A vector of *references* to the text that match, or  FALSE on error</p></span><p class="label">Similar Functions:</p><p class="description">XPathEngine::wholeText()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5305</p></span><h3 id="_resolveXPathQueryForNodeMod">
	 Method Details: _resolveXPathQueryForNodeMod</h3><hr/><br/><span class="content"><p class="prototype">function _resolveXPathQueryForNodeMod($xPathQuery, $functionName)</p><p class="description">Resolves an xPathQuery vector for a node op for modification</p><pre class="description">It is possible to create a brand new object, and try to append and insert nodes
into it, so this is a version of _resolveXPathQuery() that will autocreate the
super root if it detects that it is not present and the $xPathQuery is empty.

Also it demands that there be at least one node returned, and displays a suitable
error message if the returned xPathSet does not contain any nodes.</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">An xpath query targeting a single node.  If empty() 
                              returns the root node and auto creates the root node
                              if it doesn't exist.</p></dd>
			<dt class="parameter"><i>string</i> <b>$function</b></dt><dd class="parameter"><p class="description">The function in which this check was called</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">Vector of $absoluteXPath's (May be empty)</p></span><p class="label">Similar Functions:</p><p class="description">_resolveXPathQuery()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5417</p></span><h3 id="_resolveXPathQuery">
	 Method Details: _resolveXPathQuery</h3><hr/><br/><span class="content"><p class="prototype">function _resolveXPathQuery($xPathQuery, $function)</p><p class="description">Resolves an xPathQuery vector depending on the property['modMatch']</p><pre class="description">To:
  - all matches, 
  - the first
  - none (If the query matches more then one node.)
see  setModMatch() for details</pre><p class="label">Parameter:</p><dl>
			<dt class="parameter"><i>string</i> <b>$xPathQuery</b></dt><dd class="parameter"><p class="description">An xpath query targeting a single node.  If empty() 
                              returns the root node (if it exists).</p></dd>
			<dt class="parameter"><i>string</i> <b>$function</b></dt><dd class="parameter"><p class="description">The function in which this check was called</p></dd>
			</dl><p class="label">Return Value:</p><span class="parameter" style="float:left"><i>array</i></span><span class="parameter"><p class="description">Vector of $absoluteXPath's (May be empty)</p></span><p class="label">Similar Functions:</p><p class="description">setModMatch()</p><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5454</p></span><h3 id="_title">
	 Method Details: _title</h3><hr/><br/><span class="content"><p class="prototype">function _title($title)</p><p class="description">Produces a short title line.</p><pre class="description"></pre><p class="label" style="float:left">Line:</p><p class="description">Defined on line 5505</p></span></blockquote>
<!-- ################################################################## -->

<hr id="UpdateInstructions">

<p>To update the documentation, run the GeneratePhpDocumentation.pl script on your 
copy of XPath.class.php and pipe the output to Php.XPathDocumentation.xml.  Reloading this page 
will then show uptodate documentation for your version of Php.XPath.</p>
      
</body>
</html>